当前位置: 技术问答>linux和unix
socket的小问题
来源: 互联网 发布时间:2015-11-07
本文导语: 用Socket连接NT机上的一个服务器,服务器采用异步socket监听 和接收数据。 在Unix上的socket连接服务器时,能接收但不能发送数据。具体现象: 当使用 if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -...
用Socket连接NT机上的一个服务器,服务器采用异步socket监听
和接收数据。
在Unix上的socket连接服务器时,能接收但不能发送数据。具体现象:
当使用
if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) {
perror("connect");
exit(1);
}
numbytes=recv(sockfd,buf,MAXDATASIZE,0);
能正确接收数据。
但把recv换成
if(send(sockfd,'ok',2,0)==-1);
perror("send");
报错:Bad address
帮分析一下可能的原因。谢谢
和接收数据。
在Unix上的socket连接服务器时,能接收但不能发送数据。具体现象:
当使用
if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) {
perror("connect");
exit(1);
}
numbytes=recv(sockfd,buf,MAXDATASIZE,0);
能正确接收数据。
但把recv换成
if(send(sockfd,'ok',2,0)==-1);
perror("send");
报错:Bad address
帮分析一下可能的原因。谢谢
|
send(sockfd,"ok",2,0)
|
char a[] = "OK";
send(sockfd, (void *)&a, 2, 0);
send(sockfd, (void *)&a, 2, 0);
|
象这中函数参数类型确定的问题一般通过man来解决。
|
if(send(sockfd,'ok',2,0)==-1);
问题在这:‘ok',改成:"ok"
字符串参数和'ok'不一样的是。
问题在这:‘ok',改成:"ok"
字符串参数和'ok'不一样的是。
|
后边还多了个分号。。。
|
OK应该用双引号。
还有,"ok"应该是三个字符,不是两个。
还有,"ok"应该是三个字符,不是两个。