Ununtu Linux Socket 程序,调用send后进程自动退出,大侠们帮忙诊断一下什么原因啊?

服务器端程序步骤:1:建立一个Socket成功//CreateServerServerPortserv_servfd=socket(AF_INET,SOCK_STREAM... 服务器端程序步骤:
1:建立一个Socket 成功
// Create Server Server Port
serv_servfd = socket( AF_INET, SOCK_STREAM, 0 );

2:bind Socket 成功
l1 = bind( serv_servfd, (struct sockaddr *)&servaddr, sizeof( servaddr ));

3:Listen Socket 成功
l2 = listen( serv_servfd, ConnectNumber );

4:Accept 成功
cli_clifd = accept( serv_servfd, (struct sockaddr *)&cliaddr, &slcklen );

5:Send 此处异常退出进程,length == -1
length = send( serv_servfd, "Hello", 5, 0 );

6:cout << "OK" << endl; 此处没有执行

客户端程序步骤:
1:建立一个Socket 成功
// Create Client Client Port
cli_clifd = socket( AF_INET, SOCK_STREAM, 0 );

2:bind socket 成功
l1 = bind( cli_clifd, (struct sockaddr *)&cliaddr, sizeof( cliaddr ));

3:conncet Server socket 成功
l2 = connect( cli_clifd, (struct sockaddr *)&servaddr, slcklen );

4:recv 成功,但是只接受到0个字节 length == 0
length = recv( cli_clifd, socketbuf2, 5, 0 );

请各位大侠帮忙看看哪里有问题吗?
谢谢!找到Bug。
展开
 我来答
骑着老鼠遛猫丶
2013-05-09
知道答主
回答量:6
采纳率:0%
帮助的人:5万
展开全部
服务器端:是用于监听的套接字,accept函数执行之后,返回的值存与cli_clifd套接字中,跟客户端通信就是通过该套接字来进行。而你所定义的serv_servfd从这个程序上看,是用于监听用的,所以,send的第一个参数应该传cli_clifd!还有,建议通过errno做错误处理,这样哪一步错了,直接用perror函数打出来,一目了然!
冰魄老师
2013-05-07 · 热爱编辑百科词条的重庆人!
冰魄老师
采纳数:5497 获赞数:37354

向TA提问 私信TA
展开全部
I never think of the future. It comes soon enough.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c48f0a65
2013-05-06 · TA获得超过900个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:396万
展开全部
服务端5,应该是length = send( cli_clifd, "Hello", 5, 0 );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式