现写的程序,调试可以运行:
tcp
服务器端:
#include "iostream"
#include <winsock2.h>
using namespace std;
#pragma comment(lib,"ws2_32.lib")//载入win32库
#define MAIN_PORT 5500
#define BUFFER_LEN 1024
void main()
{
WSAData wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);//开启服务
SOCKET ListenSock;
ListenSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//初始化监听套接字
sockaddr_in LocalAddr={0};
LocalAddr.sin_family=AF_INET;
LocalAddr.sin_port=htons(MAIN_PORT);
LocalAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
::bind(ListenSock,(sockaddr*)&LocalAddr,sizeof(sockaddr_in));//将监听套接字绑定到本地一端口上
listen(ListenSock,5);//设置最大监听值
cout<<"开始监听!"<<endl;
SOCKET ClientSock; //创建与Client连接套接字
sockaddr_in AptAddr={0};//存储Client的通信地址
int Addrlen=sizeof(sockaddr_in);
cout<<"等待Client端连入!"<<endl;
ClientSock=accept(ListenSock,(sockaddr*)&AptAddr,&Addrlen);//等待对方的连入
cout <<"接收到一条连接!"<<endl;
int RcvLen=0;
char buf[BUFFER_LEN];
while(RcvLen>=0)
{
memset(buf,0,BUFFER_LEN);
RcvLen=recv(ClientSock,buf,BUFFER_LEN,0);
if(RcvLen>0)
cout<<buf<<endl;
}
cout<<"Client 退出!"<<endl;
WSACleanup();
}
客户端:
#include "iostream"
#include <winsock2.h>
using namespace std;
#pragma comment(lib,"ws2_32.lib")//载入win32库
#define MAIN_PORT 5500
#define BUFFER_LEN 1024
void main()
{
WSAData wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);//开启服务
SOCKET CntSock;
CntSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//初始化监听套接字
sockaddr_in CntAddr={0};
CntAddr.sin_family=AF_INET;
CntAddr.sin_port=htons(MAIN_PORT);//服务器开启的端口
CntAddr.sin_addr.S_un.S_addr=inet_addr("192.168.0.27");//服务器的IP地址
while(connect(CntSock,(sockaddr*)&CntAddr,sizeof(sockaddr_in)))//连接服务器
{
cout<<"等待服务器开启"<<endl;
Sleep(50);
}
cout<<"连接上服务器"<<endl;
int RcvLen=0;
char buf[BUFFER_LEN];
memset(buf,0,BUFFER_LEN);
cout<<"输入要发送的内容: ";
cin>>buf;
send(CntSock,buf,strlen(buf),0);//发送
cout<<"发送成功!"<<endl;
while(RcvLen>=0)
{
memset(buf,0,BUFFER_LEN);
RcvLen=recv(CntSock,buf,BUFFER_LEN,0);//接收
if(RcvLen>0)
cout<<buf<<endl;
}
cout<<"服务器退出!"<<endl;
WSACleanup();
}
温馨提示:内容为网友见解,仅供参考