当前位置: 技术问答>linux和unix
网络编程,接收不到数据
来源: 互联网 发布时间:2016-12-20
本文导语: 刚开始学网络编程,写了个小程序测试了一下,老是第一次接收不到数据,但是就是能接收到结束标志,郁闷。 一小段代码如下: 服务端: while(1) { printf("abcn"); bzero(buffer2,sizeof(buffer2)); ...
刚开始学网络编程,写了个小程序测试了一下,老是第一次接收不到数据,但是就是能接收到结束标志,郁闷。
一小段代码如下:
服务端: while(1)
{
printf("abcn");
bzero(buffer2,sizeof(buffer2));
n=read(pthread->clientsocket,buffer2,sizeof(buffer2));
printf("read=%dn",n);
printf("%sn",buffer2);
if(strcmp(buffer2,"quit")==0)
break;
fwrite(buffer2,n,1,fp);
}
printf("recv overn");
fclose(fp);
客服端:
fd=open(mp.filename,O_RDWR);
if(fd==-1)
{
perror("open file error!");
exit(1);
}
lseek(fd,0,SEEK_SET);
bzero(buffer,sizeof(buffer));
while((n=read(fd,buffer,sizeof(buffer)))>0)
{
m=write(socket2,buffer,strlen(buffer));
printf("write=%dn",m);
printf("%sn",buffer);
sleep(1);
bzero(buffer,sizeof(buffer));
}
close(fd);
bzero(buffer,sizeof(buffer));
strcpy(buffer,"quit");
sleep(1);
write(socket2,buffer,strlen(buffer));
printf("%sn",buffer);
printf("update file over!n");
客服端终端信息如下:
Update Files:b.c //输入文件,打印如下
write=11
123456
789
quit
update file over!
服务端终端信息如下:
abc
read=4
quit
recv over //每次客服端输入文件名,服务端就只打印这四句。
求高手指正一下!
一小段代码如下:
服务端: while(1)
{
printf("abcn");
bzero(buffer2,sizeof(buffer2));
n=read(pthread->clientsocket,buffer2,sizeof(buffer2));
printf("read=%dn",n);
printf("%sn",buffer2);
if(strcmp(buffer2,"quit")==0)
break;
fwrite(buffer2,n,1,fp);
}
printf("recv overn");
fclose(fp);
客服端:
fd=open(mp.filename,O_RDWR);
if(fd==-1)
{
perror("open file error!");
exit(1);
}
lseek(fd,0,SEEK_SET);
bzero(buffer,sizeof(buffer));
while((n=read(fd,buffer,sizeof(buffer)))>0)
{
m=write(socket2,buffer,strlen(buffer));
printf("write=%dn",m);
printf("%sn",buffer);
sleep(1);
bzero(buffer,sizeof(buffer));
}
close(fd);
bzero(buffer,sizeof(buffer));
strcpy(buffer,"quit");
sleep(1);
write(socket2,buffer,strlen(buffer));
printf("%sn",buffer);
printf("update file over!n");
客服端终端信息如下:
Update Files:b.c //输入文件,打印如下
write=11
123456
789
quit
update file over!
服务端终端信息如下:
abc
read=4
quit
recv over //每次客服端输入文件名,服务端就只打印这四句。
求高手指正一下!
|
你把代码贴全。主要看你的socket还有读写操作
|
是否是阻塞式的socket,是不是阻塞在那个地方了,跟踪一下
|
上gdb调试,呵呵