加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

socket服务器出现accept:Bad address提示的问题

(2013-03-30 09:37:34)
标签:

accept

badaddress

socket

it

分类: linux_question

对于服务器编程中最重要的一步等待并接受客户的连接,那么这一步在编程中如何完成,accept函数就是完成这一步的。

Accept 以同步方式从侦听套接字的连接请求队列中提取第一个挂起的连接请求,然后创建并返回新的 Socket

 

今天尝试编写一个简单的socket服务器,与socket客户端进行通信,然而服务器端却出现acceptBad address的提示

http://s13/mw690/740ccd04gd91a9943746c&690address提示的问题" TITLE="socket服务器出现accept:Bad address提示的问题" />
坏的地址,什么情况!
先了解socket通信过程,引用网络上这段,感觉很好:
 有人从很远的地方通过一个你在侦听 (listen()) 的端口连接 (connect()) 到你的机器。他的连接将加入到等待接受(accept()) 的队列中。你调用 accept() 告诉他你有空闲的连接。他将返回一个新的套接口文件描述符! 原来的一个还在侦听你的那个端口,新的最后在准备发送 (send()) 和接收 ( recv()) 数据。这就是这
个过程!

先看看accept的具体用法:
 #include  
  int accept(int sockfd, void *addr, int *addrlen);  
sockfd 相当简单,是和 listen() 中一样的套接口描述符。addr 是个指向局部的数据结构 struct 
sockaddr_in 的指针。 在他的地址传递给 accept之前,addrlen 是个局部的整形发量,设置为 sizeof(struct sockaddr_in)。
错诨误时返回-1 并设置全局发量 errno。

仔细对比下:发现自己写的时候,第三个参数没有设置为指针,也就是说addrlen这个指针。
http://s10/mw690/740ccd04gd91abdcc78a9&690address提示的问题" TITLE="socket服务器出现accept:Bad address提示的问题" />

囧,加上就不会有这个提示了~~~
服务器可以正常运行了
http://s10/mw690/740ccd04gd91ac3827909&690address提示的问题" TITLE="socket服务器出现accept:Bad address提示的问题" />


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有