linux在子进程中,client与server进行socket通信,客户端socket断开后不能与server连接,求高手指点

程序大概如下:在子进程中intmain(){‘'''''''''''''''端口与程序初始化部分''''''''''''''''';for('''''''''''''''... 程序大概如下:在子进程中
int main()
{‘'''''''''''''''端口与程序 初始化部分''''''''''''''''';
for( '''''''''''''''' )
{
connect( socket );
write(com_fd,buf,len); //client向server发送数组buf
read(com_fd,buf,len); //client读取从server送回来的数组buf
''''''client进行数组buf操作部分'''''';
close(com_fd);
}
}
本程序的用途是:client与server连接后,向server发送buf数组,server将buf做相应的处理后发回来,之后client可以与server不断的建立通信,但是问题是client第一次发送数据后并成功接收数据,第二次client接收的是自己的数据,也就是server并没有与client通信,这是为什么呢?我应该怎么改?
展开
 我来答
zxc570157491
2012-05-03 · TA获得超过100个赞
知道答主
回答量:99
采纳率:0%
帮助的人:94万
展开全部
在不间断的建立连接过程中,每一次的连接断开会经过TCP状态的time_wait状态,这个状态的作用就是延迟一段时间,然后保证下一次连接的不会被当成上一次的连接。所以第二次的连接建立时如果没有经过一段时间第二次的连接会失败,报错会显示address in use这儿就是time_wait状态。你如果是在不同主机上进行不间断的连接肯定会出现上面的报错。
sunyqg
2012-05-01 · TA获得超过1084个赞
知道小有建树答主
回答量:477
采纳率:75%
帮助的人:635万
展开全部
write和read函数最好加上判断读写是否成功的判断:if(write(com_fd, buf, len) <= 0)...
如不是此原因,需要查server的代码。
追问
好像我的server没有放进子进程里面,但是我前天试了一下,还是不行,server还是不能持续接收
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BardMercy
2012-05-01 · TA获得超过573个赞
知道答主
回答量:209
采纳率:0%
帮助的人:237万
展开全部
以前我遇到过这种情况,好像是将isten语句的位置不对,导致断开后无法建立新的连接
更多追问追答
追问
我应该放在什么位置才对
追答
好像是初始化那里
好久了,具体忘了,你多试试吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式