18,356
社区成员
发帖
与我相关
我的任务
分享
#include <winsock2.h>
#include <iostream>
using namespace std;
int main()
{
WSADATA wsaData;
SOCKET client;
SOCKADDR_IN addr ;
char buf[128];
if(WSAStartup(0x202,&wsaData)!=0)
{
cout<<"initiate Winsock DLL erro"<<endl;
return -1;
}
client=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
cout<<"Server IP:";
cin.getline(buf,128,'\n');
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=inet_addr(buf);
addr.sin_port=htons(6666);
if(connect(client,(SOCKADDR*)&addr,sizeof(addr))==SOCKET_ERROR)
{
cout<<"connect failed"<<WSAGetLastError()<<endl;
WSACleanup();
return -1;
}
else cout<<"连接成功"<<endl;
while(1)
{
cin.getline(buf,128,'\n');
if (strcmp(buf,"quit")==0) break;
send(client,buf,sizeof(buf),0);
if(recv(client,buf,sizeof(buf),0)>0)
{
cout<<buf<<endl;
memset(buf,0,128);
}
}
closesocket(client);
WSACleanup();
return 0;
}
Server:
#include <iostream>
#include <winsock2.h>
using namespace std;
int main()
{
WSADATA wsaData;
PHOSTENT hostinfo;
SOCKET server,accSock;
SOCKADDR_IN addr,addrout;
int port,len=sizeof( SOCKADDR);
char buf[128],*ip;
if (WSAStartup(0x202,&wsaData)!=0)
{
cout<<"error"<<endl;
return -1;
}
server=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
addr.sin_family=AF_INET;
addr.sin_addr.s_addr= htonl(INADDR_ANY);
addr.sin_port=htons(6666);
bind(server,(SOCKADDR*)&addr,sizeof(addr));
gethostname(buf,sizeof(buf));
hostinfo=gethostbyname(buf);
ip=inet_ntoa(*(IN_ADDR*)*hostinfo->h_addr_list);
listen(server,1);
cout<<"接收端:"<<ip<<"等待连接"<<endl;
accSock=accept(server,(SOCKADDR*)&addrout,&len);
ip=inet_ntoa(addrout.sin_addr);
port=htons(addrout.sin_port);
cout<<"发送端:"<<ip<<":"<<port<<endl;
while(1)
{int flag=0;
flag=recv(accSock,buf,sizeof(buf),0);
if(flag>0)
{
cout<<buf<<endl;
cin.getline(buf,128);
send(accSock,buf,sizeof(buf),0);
memset(buf,0,128);
}
if (strcmp(buf,"quit")==0) break;
}
closesocket(accSock);
closesocket(server);
WSACleanup();
return 0;
}