가장 간단하고 가벼운 솔루션 - 당신은 FILE*
의 형태로 두 컴퓨터 사이의 연결을 열린이있는 경우 - 한쪽 끝 fprintf
로 전송하고, 다른 한편으로 fscanf
으로 디코딩 할 수 있습니다.
protocol.h :
typedef struct _packet packet_t;
struct _packet {
int account_number;
char *first_name;
char *last_name;
float balance;
};
static const char packet_fmt[]=" acct: %d fname: %s sname: %s balance: %f";
보낸 사람 :
...
printf(packet_fmt, acct, "Greg", "Benison", bal);
...
청취자 :
...
int n_read = fscanf(fin, packet_fmt, &acct, fname, sname, &balance);
if (n_read == 4)
printf("Received balance update for %s %s: %f\n", fname, sname, balance);
...
당신의 네 개의 필드 구조체 충분 수 있지만, 당신은 그 구조의 변화를 예상하는 경우 XML, JSON 또는 기타 형식적 인코딩을 추구하는 것이 중요 할 수도 있습니다.
데이터를 바이트 청크로 변환하고 바이트를 다른 컴퓨터로 전송 한 다음 해당 바이트를 디코딩해야합니다. 바이트 수준에서 정의 할 수있는 한 텍스트, XML 또는 원하는 다른 형식을 사용할 수 있습니다. –
C 직렬화 라이브러리 목록을 보려면 [this] (http://stackoverflow.com/questions/371371/serialize-data-structures-in-c)를 참조하십시오. 당신은 아마 그들 중 하나를 사용할 수 있습니다. – dirkgently
@blackbear 문자열에 문제가 없지만 int 및 float에 대한 바이트 순서/단어 크기에 문제가 발생할 수 있습니다. – gcbenison