关于socket通信的问题

xue_opnet 2016-05-10 07:24:10
server端主函数
while(1)
{
int ret;
Gate *clt=(Gate *)calloc(1, sizeof(Gate));
memset(Recv_Buf,0,sizeof(Recv_Buf));
ret=recv(sClinetSock,Recv_Buf,sizeof(Recv_Buf),0);
printf("Recv_Buf Mesg:%s\n",Recv_Buf);
ret=sizeof(Gate);
printf("sizeof(Gate):%d\n",ret);
sscanf(Recv_Buf,"%d%d%lf%lf%lf",&clt->tx_wave,&clt->gate_length,&clt->gate_length1,&clt->gate_length2,&clt->start_time);
printf("Packet Report: \ntx_wave = %d\n gate_length = %d\n gate_length1 = %f\ngate_length2 = %f\nOPNET Time = %f\n", clt->tx_wave,clt->gate_length,clt->gate_length1,clt->gate_length2,clt->start_time);

int message_size = sizeof(Gate);
clt->tx_wave = clt->tx_wave + 2;
memset(Send_Buf,0,sizeof(Send_Buf));
sprintf(Send_Buf,"%d %d %f %f %f",clt->tx_wave,clt-> gate_length,clt-> gate_length1,clt-> gate_length2,clt->start_time);
printf("Send_Buf Mesg:%s\n",Send_Buf);
send(sClinetSock,Send_Buf,sizeof(Send_Buf),0);
free(clt);

}

client端主函数
while(1)
{
Esa_Execute_Until(esa_handle, &status_1, time_val, exec_options, &time_reached, &num_events);
recv(sClntSock,RSC_Buf,sizeof(RSC_Buf),0);
printf("RSC_Buf Mesg:%s\n",RSC_Buf);
Interface_Packet_Data *clt=(Interface_Packet_Data *)calloc(1, sizeof(Interface_Packet_Data));
sscanf(RSC_Buf,"%d%d%lf%lf%lf",&clt->tx_wave,&clt->gate_length,&clt->gate_length1,&clt->gate_length2,&clt->start_time);
printf("收到的数据包为: \ntx_wave = %d\n gate_length = %d\n gate_length1 = %f\ngate_length2 = %f\nOPNET Time = %f\n", clt->tx_wave,clt->gate_length,clt->gate_length1,clt->gate_length2,clt->start_time);

}

client端发送5个结构体给server。server更改结构体中yppe值后再返回给client,但是接收完后,程序好像处于奔溃,结果如下
一直在不停的接收最后一个包?请问是怎么回事?
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-05-11
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
xue_opnet 2016-05-11
  • 打赏
  • 举报
回复
引用 5 楼 renwotao2009 的回复:
看看服务器端分配的内存够不够
请问是看一个发包的内存还是其它什么? Gate *clt=(Gate *)calloc(1, sizeof(Gate)); 这条语句说明分配内存的大小,是正确的
renwotao2009 2016-05-11
  • 打赏
  • 举报
回复
看看服务器端分配的内存够不够
xue_opnet 2016-05-11
  • 打赏
  • 举报
回复
引用 2 楼 x20121223 的回复:
如果你想认真搞网络编程的话买本unix网络编程看看吧。你这代码问题太多了,看了那本书基本上你就不会来问这种问题了。
好,我看看
xue_opnet 2016-05-11
  • 打赏
  • 举报
回复
引用 1 楼 lgbxyz 的回复:
server死循环里没有accept ?
有,我没把socket通信建立连接的部分程序贴出来,那部分程序没有问题
wersdfadaf 2016-05-10
  • 打赏
  • 举报
回复
如果你想认真搞网络编程的话买本unix网络编程看看吧。你这代码问题太多了,看了那本书基本上你就不会来问这种问题了。
LubinLew 2016-05-10
  • 打赏
  • 举报
回复
server死循环里没有accept ?

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧