当前位置: 技术问答>linux和unix
关于UDP套接字的问题
来源: 互联网 发布时间:2016-11-12
本文导语: 在UDP套接字的客户端程序中,用sendto()发送数据到server端,之后server端收到数据再返回一个确认信号。 可是在我编写的client程序里,能成功发送数据到server端,当在接受server端返回确认信号时,因为必须判断信息是...
在UDP套接字的客户端程序中,用sendto()发送数据到server端,之后server端收到数据再返回一个确认信号。
可是在我编写的client程序里,能成功发送数据到server端,当在接受server端返回确认信号时,因为必须判断信息是否来自相应的server端,所以用memcmp()来判断发送的目的地址信息和收到的来源地址信息是否一致。但是不知道为什么判断老是不通过。
可是在我编写的client程序里,能成功发送数据到server端,当在接受server端返回确认信号时,因为必须判断信息是否来自相应的server端,所以用memcmp()来判断发送的目的地址信息和收到的来源地址信息是否一致。但是不知道为什么判断老是不通过。
//在client中设置的服务器端地址如下
bzero(&server, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = htonl(INADDR_ANY);
|
最后两行改下
server.sin_port = htons(atoi(argv[2]))
server.sin_addr.s_addr = inet_addr(argv[1])
直接从主函数传参进来。。
int main(int argc, char *argv[])
argv[1]传ip。。。argv[2]传port
server.sin_port = htons(atoi(argv[2]))
server.sin_addr.s_addr = inet_addr(argv[1])
直接从主函数传参进来。。
int main(int argc, char *argv[])
argv[1]传ip。。。argv[2]传port
|
只比ip和port好了。。。不要直接比地址结构体。。里面还有其它没赋值的字段
|
同意楼上说法,你应该解包后比较,或者只比较ip和port所在的字段。