1.服务端代码:
- #include <WinSock2.h>
- #include <iostream>
- #pragma comment(lib,"ws2_32.lib")
- using namespace std;
- void main(){
- //初始化SOCKET
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
- wVersionRequested = MAKEWORD(1,1);
- err = WSAStartup( wVersionRequested, &wsaData);
- if(err!=0){
- return;
- }
- if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){
- WSACleanup();
- return;
- }
- //设置SOCKET
- SOCKET server = socket(AF_INET,SOCK_DGRAM,0);
- SOCKADDR_IN addr;
- addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
- addr.sin_family = AF_INET;
- addr.sin_port = htons(6000);
- //绑定服务器
- bind(server,(SOCKADDR*)&addr, sizeof(SOCKADDR));
- char recvBuf[1024],sendBuf[1024],tempBuf[1024];
- SOCKADDR_IN addrClient;
- INT len = sizeof(SOCKADDR);
- sendto(server,"连接成功,请键入聊天消息",strlen("连接成功,请键入聊天消息")+1,0,(SOCKADDR*)&addrClient,len);
- while(1){
- //读取数据
- recvfrom(server,recvBuf,1000,0,(SOCKADDR*)&addrClient,&len);
- cout<<recvBuf<<endl;
- cout<<"夜末: ";
- cin>>sendBuf;
- sprintf(tempBuf,"夜末: %s",sendBuf);
- sendto(server,tempBuf,strlen(tempBuf)+1,0,(SOCKADDR*)&addrClient,len);
- }
- closesocket(server);
- WSACleanup();
- }
#include <WinSock2.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
void main(){
//初始化SOCKET
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup( wVersionRequested, &wsaData);
if(err!=0){
return;
}
if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){
WSACleanup();
return;
}
//设置SOCKET
SOCKET server = socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addr.sin_family = AF_INET;
addr.sin_port = htons(6000);
//绑定服务器
bind(server,(SOCKADDR*)&addr, sizeof(SOCKADDR));
char recvBuf[1024],sendBuf[1024],tempBuf[1024];
SOCKADDR_IN addrClient;
INT len = sizeof(SOCKADDR);
sendto(server,"连接成功,请键入聊天消息",strlen("连接成功,请键入聊天消息")+1,0,(SOCKADDR*)&addrClient,len);
while(1){
//读取数据
recvfrom(server,recvBuf,1000,0,(SOCKADDR*)&addrClient,&len);
cout<<recvBuf<<endl;
cout<<"夜末: ";
cin>>sendBuf;
sprintf(tempBuf,"夜末: %s",sendBuf);
sendto(server,tempBuf,strlen(tempBuf)+1,0,(SOCKADDR*)&addrClient,len);
}
closesocket(server);
WSACleanup();
}
2.客户端代码
- #include <WinSock2.h>
- #include <iostream>
- #pragma comment(lib,"ws2_32.lib")
- using namespace std;
- void main(){
- char ip[20],name[100];
- cout<<"请输入服务器端IP地址:";
- cin>>ip;
- cout<<"请输入名的昵称:";
- cin>>name;
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
- wVersionRequested = MAKEWORD(1,1);
- err = WSAStartup( wVersionRequested, &wsaData);
- if(err!=0){
- return;
- }
- if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){
- WSACleanup();
- return;
- }
- SOCKET client = socket(AF_INET,SOCK_DGRAM,0);
- SOCKADDR_IN addr;
- addr.sin_addr.S_un.S_addr = inet_addr(ip);
- addr.sin_family = AF_INET;
- addr.sin_port = htons(6000);
- char recvBuf[1024],sendBuf[1024],tempBuf[1024],nameBuf[1024];
- int len = sizeof(SOCKADDR);
- while(1){
- sprintf(nameBuf,"%s: ",name);
- cout<<nameBuf;
- //发送
- cin>>sendBuf;
- sprintf(tempBuf,"%s: %s",name,sendBuf);
- sendto(client,tempBuf,strlen(tempBuf)+1,0,(SOCKADDR*)&addr,len);
- //读取
- recvfrom(client,recvBuf,1000,0,(SOCKADDR*)&addr,&len);
- cout<<recvBuf<<endl;
- }
- }