关于网络传输的问题,我想应该很简单的,但我做不出来了,请高手来看看,万分感谢!!!!

ibaobao 2001-10-09 01:43:39
下面是server and client 的程序,连接可都很正常的,就是传输数据的时候出现问题#include <stdio.h>
#include <windows.h>
#include <winsock.h>
int main()
{
WSADATA wsaData;
SOCKET s;
struct sockaddr_in tcpaddr;
int addrsz = sizeof(tcpaddr),
port = 5150;
char sendbuf[4096]="";
if(WSAStartup(MAKEWORD(1,1),&wsaData)!=0)
{
printf("WSAStartup failed!");
return false;
}
s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(s == INVALID_SOCKET)
{
printf("socket() failed %d",WSAGetLastError());
return false;
}
ZeroMemory(&tcpaddr,sizeof(tcpaddr));
tcpaddr.sin_family = AF_INET;
tcpaddr.sin_port = htons(port);
tcpaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if(bind(s,(SOCKADDR *)&tcpaddr,sizeof(tcpaddr)) == INVALID_SOCKET)
{
printf("bind() failed %d",WSAGetLastError());
return false;
}
if(listen(s,8) == INVALID_SOCKET)
{
printf("listen() failed %d",WSAGetLastError());
return false;
}
if(accept(s,(SOCKADDR *)&tcpaddr,&addrsz) == INVALID_SOCKET)
{
printf("accept() failed %d",WSAGetLastError());
return false;
}
char recvbuff[1024];
int ret,
nleft,
idx;
nleft=1024;
idx=0;
while(nleft>0)
{
ret=recv(s,&recvbuff[idx],nleft,0);
if(ret ==SOCKET_ERROR)
{
printf("recv() failed!\n");
return false;
}
idx +=ret;
nleft -=ret;
}
printf("send word: %s",&recvbuff);
return true;

}
#include <windows.h>
#include <stdio.h>
#include <winsock.h>
int main()
{
WSADATA wsaDate;
SOCKET s;
struct sockaddr_in tcpaddr;
int addrsz = sizeof(tcpaddr),
prot = 5150;
char sendbuf[1024] = "this is a new world";
int nSend = 1024+1,
ret = 0,
npos = 0;
if(WSAStartup(MAKEWORD(1,1),&wsaDate)!=0)
{
printf("Wsastartup falied!");
return false;
}
s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(s == INVALID_SOCKET)
{
printf("socket() failed %d",WSAGetLastError());
return false;
}
ZeroMemory(&tcpaddr,sizeof(tcpaddr));
tcpaddr.sin_family = AF_INET;
tcpaddr.sin_port = htons(prot);
tcpaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if(connect(s,(SOCKADDR *)&tcpaddr,addrsz) == INVALID_SOCKET)
{
printf("connect() falid %d",WSAGetLastError());
return false;
}
while(nSend>0)
{
if((ret = send(s,&sendbuf[npos],nSend,0))==SOCKET_ERROR)
{
printf("send failed!");
return false;
}
nSend -=ret;
npos +=ret;
}
return true;
}


...全文
55 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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