構造体の一部をクライアントに渡そうとしていますが、苦労しています。次の print ステートメントを使用して、ケース 1 の条件をテストしました。
printf("%d %s", data[i].course, data[i].Dept);
これは問題なく動作しました。今私がやろうとしているのは、ソケットを介して送信することです。私の送信ステートメントは次のとおりです。
send(connected, send_data, strlen(send_data), 0);
今、私は次のステートメントを試しました:
send_data = data[i].couurse;
strcpy(send_data, data[i].course);
send_data = atoi(data[i].course);
そして、役に立つことを知るために、どちらもうまくいきませんでした。私は方法がなければならないことを知っており、誰かが私にその方法を教えてくれることを望んでいます. コードの関連部分を含めました。
int switchInput;
int i = 0;
int connected;
int sock;
int bytes_received;
int sin_size;
int true = 1;
int tempCourse = 0;
char send_data[BUF];
char recv_data[BUF];
char tempDept[5];
char tempDay[1];
char tempTime[1];
FILE *filePointer;
sched_record data[MAX_RECORD];
filePointer = fopen (BINFILE, "rb");
と:
while(1) {
bytes_received = recv(connected, recv_data, BUF, 0);
recv_data[bytes_received] = '\0';
switchInput = atoi(recv_data);
switch(switchInput) {
case 1:
fread(data, sizeof(sched_record), MAX_RECORD, filePointer);
fclose(filePointer);
char send_data[] = "Enter Department Name";
send(connected, send_data, strlen(send_data), 0);
bytes_received = recv(connected, recv_data, BUF, 0);
recv_data[bytes_received] = '\0';
strcpy(tempDept, recv_data);
for (i=0; i<MAX_RECORD; i++){
if ((strcmp(tempDept, data[i].Dept)==0) && tempCourse != data[i].course){
send(connected, &data[i].Dept, sizeof(data[i].Dept), 0);
tempCourse = data[i].course;
send(connected, &tempCourse, sizeof(tempCourse), 0);
}
}
break;
この特定のケースでは、コースと部門を送信する必要があります。また、これを行うためのより良い方法はありますか? これはちょっと厄介なようです。もしそうなら、もっと単純化されたバージョンを見せてもらえますか?