socket connect error return -1,该怎么解决
发布时间:2011-06-27 17:42:09 文章来源:www.iduyao.cn 采编人员:星星草
socket connect error return -1
刚刚学习linux,学习socket的时候第一个例子到client的connect函数就出现了错误。返回-1.
server:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define LISTENQ 5
#define MAXLINE 512
int main(){
int listenfd , connfd ;
struct sockaddr_in servaddr , cliaddr ;
socklen_t len ;
char buff[MAXLINE] ;
time_t ticks ;
listenfd = socket(AF_INET , SOCK_STREAM , 0) ;
if(listenfd < 0){
printf("Socket created failed.n") ;
}
servaddr.sin_family = AF_INET ;
servaddr.sin_family = htons(6666) ;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY) ;
if(bind(listenfd , (struct sockaddr*)&servaddr , sizeof(servaddr)) < 0){
printf("bind failed.n") ;
return -1 ;
}
printf("listening...n") ;
listen(listenfd , LISTENQ) ;
while(1){
len = sizeof(cliaddr) ;
connfd = accept(listenfd , (struct sockaddr*)&cliaddr , &len) ;
printf("connect from %s , port %dn" , inet_ntoa(cliaddr.sin_addr.s_addr) ,
ntohs(cliaddr.sin_port)) ;
ticks = time(NULL) ;
sprintf(buff , "%.24s rn" , ctime(&ticks)) ;
write(connfd , buff , strlen(buff)) ;
close(connfd) ;
}
}
client:
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define MAXBUFFSIZE 256
#define PORT 6666
#define HOST_ADDR "127.0.0.1"
int main(int argc , char *argv[]){
int sockfd , n ;
char recvbuff[MAXBUFFSIZE] ;
struct sockaddr_in servaddr ;
sockfd = socket(AF_INET , SOCK_STREAM , 0) ;
if(sockfd < 0){
printf("Socket create failed.n") ;
return -1 ;
}
servaddr.sin_family = AF_INET ;
servaddr.sin_port = htons(6666) ;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY) ;
printf("connecting...n") ;
int connect_ret = connect(sockfd , (struct sockaddr*)&servaddr , sizeof(servaddr)) ;
if(connect_ret < 0){
printf("Connect server failed connect_ret = %d.n" , connect_ret) ;
return -1 ;
}
while((n == read(sockfd , recvbuff , MAXBUFFSIZE)) > 0){
recvbuff[n] = 0 ;
fputs(recvbuff , stdout) ;
}
if(n < 0){
printf("Read failed.n") ;
return -2 ;
}
return 0 ;
}
------解决方案--------------------
servaddr.sin_family = AF_INET ;
servaddr.sin_port = htons(6666) ;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY) ;
客户端这里不能INADDR_ANY啊,填个127.0.0.1吧。
------解决方案--------------------
servaddr.sin_family = AF_INET ;
servaddr.sin_family = htons(6666) ;
这里怎么对同一个成员赋值了两次?而且貌似第二个是要绑定到端口吧?
如果是端口的话,那也是 servaddr.sin_port = htons(6666)
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
在ubuntu下怎么播放swf 和csf 文件?
虽然,firefox 可以播放swf文件,但是没有托动条。
在ubuntu下怎么播放swf和 csf文件?
哪个高...
-
2011年最新录制的Linux(CentOS)视频教程
电驴地址:http://www.verycd.com/topics/2875873/
------解决方案--------------------
l...
-
求《操作系统:设计与实现》pdf
A.S.Tanenbaum写的《操作系统设计与实现》,有上下册,谁有的,帮个忙,非常感谢。qifeifei@live.cn
----...
-
linux用户态内存的物理地址问题?
小弟我看linux内存管理一段时间了。有一个问题一直不解。 linux用户态进程使用0—3G的线性地址...
-
安装linux chm阅读器 xchm
[root@localhost ~]# yum install chmlib
[root@localhost ~]# yum install wxGTK
[root@localhost ~]...
-
都说Linux是开源的,在哪可以找到Linux的源码?
都说Linux是开源的,在哪可以找到Linux的源码?
烦请各位高手指点一二,谢谢。
------解决...
-
求解2个概念,书上没找到,急用,谢谢大家
1.Unix中磁盘文件和设备文件的异同点。
2.Unix中原子和竞争的概念。
求正解,因为考试可能会考...
-
有人在fedora 10下安装 oracle database 11g,没有呀?提供个安装步骤
有人在fedora 10下安装 oracle database 11g,没有呀?提供个安装...
-
用什么学习函数库?
我们现在学习LINUX 编程,读程序时候有很多头文件,代码中有许多库函数。
#include <sys/types.h>
#include <wait....
-
linux下c语言写的shell,花了不少时间写得 有兴趣的可以看看,本人linux初学者
http://download.csdn.net/source/2799757
------解...