求助:tcp/ip连接嵌入式设备accept时遇上问题

gookey 2007-03-09 05:32:05
用网线连接两个嵌入式设备,利用tcp/ip协议,服务器端创建socket、bind、listen都正确,客户端创建socket也正确。但当客户端发送connect信号时,服务端在accept前就中断连接了。由于连接嵌入式设备时,无法得知具体的错误。connect信号只要一发到服务端,连接就被异常中断。具体代码如下:
服务端:
void main_task(void *id)
{
int ServerSoc;
int addrlen;
int newsocket;
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr_out;

InitNetWork();
addrlen = sizeof(struct sockaddr_in);
if(ServerSoc=socket(AF_INET,SOCK_STREAM, 0)<0)
Uart_Printf("error socket\n");

servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr=(210<<24)|(221<<16)|(219<<8)|219;
//servaddr.sin_addr.s_addr=INADDR_ANY;
servaddr.sin_port=htons(3333);
bzero (&(servaddr.sin_zero),8);

if(bind(ServerSoc, (struct sockaddr*)&servaddr, sizeof(struct sockaddr))<0)
Uart_Printf("error bind\n");

if(listen(ServerSoc,20)==-1)
Uart_Printf("error listen\n");

for(;;){
Uart_Printf("task1\n");
if(newsocket = accept(ServerSoc, (struct sockaddr*)&cliaddr_out, (int*)&addrlen)<0)//既不返回错误,收到客户端accept程序就死了
{
Uart_Printf("error accept\n");
}
......
客户端:
int ClientSock_out;
struct sockaddr_in cliaddr_out;

InitNetWork();
ClientSock_out=socket(PF_INET,SOCK_STREAM, 0);
if(ClientSock_out<0) Uart_Printf("error_sock");

servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = (210<<24)|(221<<16)|(219<<8)|219;
servaddr.sin_port = htons(3333);
if(connect(ClientSock_out,(struct sockaddr*)&servaddr,sizeof(struct sockaddr))<0)
Uart_Printf("error connect");//也不返回错误值
......
...全文
214 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,354

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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