我想用UDP發送文本,通過分別發送每個字符,但有些東西似乎是錯誤的。 這是客戶:用UDP發送字符
while(strcmp(sir,"0")!=0)
{
printf("Text number %d:", i);
i++;
scanf("%s",sir);
printf("\n");
sirLen=strlen(sir);
for(j=0;j<sirLen;j++)
{ c=sir[j];
printf("%c",c);
sendto(sock, &c, sizeof(char), 0, (struct sockaddr *)&ServAddr, sizeof(ServAddr));
}
}
raspunsLen=recvfrom(sock, raspuns, SIRMAX, 0,(struct sockaddr *) &fromAddr, &fromSize);
raspuns[raspunsLen] = '\0';
printf("%s",raspuns);
,這將是服務器:
for (;;)
{
cliAddrLen = sizeof(ClntAddr);
while(sir != '0')
{
recvfrom(sock, &sir, sizeof(char), 0,(struct sockaddr *) &ClntAddr, &cliAddrLen);
raspuns[i]=sir;
printf("%c",sir);
}
raspunsMsgSize=strlen(raspuns);
sendto(sock, raspuns, raspunsMsgSize, 0, (struct sockaddr *) &ClntAddr, sizeof(ClntAddr));
}
它工作時,我發短信,但這樣的服務器似乎並沒有被接受任何的整件。希望有人能幫忙。 謝謝。
你的代碼最後需要'0',但我沒有看到你發送它 - 除非它是用戶輸入的字符串的一部分。實際上,你可能意味着0,如「所有位的字節清楚「,但你也不會發送。嘗試輸入,例如「CS 101」作爲輸入字符串。 – Arkadiy 2011-05-09 19:24:07
什麼是在服務器部分的'sir'聲明? – 2011-05-09 19:28:37
一個簡單的建議,從不使用UDP發送機制,在這個機制中你有個別字符要發送到一個包中。因爲UDP不是一個可靠的協議,你永遠不會知道什麼是什麼。如果是這種情況,你必須使用tcp協議。 – maheshgupta024 2011-05-09 19:17:05