我想用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