#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main(void)
{
//初始化wsa
WORD sockVision = MAKEWORD(2, 2);
WSADATA wsadata;
//其他变量
SOCKET serSocket;
struct sockaddr_in remoteAddr;
struct sockaddr_in sin;
int ret = -1;
int nAddrlen = sizeof(remoteAddr);
char revdata[255];
char senddata[255];
if (WSAStartup(sockVision, &wsadata) != 0)
{
printf("WSA初始化失败\n");
return 0;
}
//创建套接字
serSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (serSocket == INVALID_SOCKET)
{
printf("socket服务器创建失败\n");
return 0;
}
//绑定IP和端口
sin.sin_family = AF_INET;
sin.sin_port = htons(8888);
sin.sin_addr.S_un.S_addr = INADDR_ANY;
if (bind(serSocket, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf("绑定IP和端口\n");
return 0;
}
//循环接收数据
while (1)
{
ret = recvfrom(serSocket, revdata, 255, 0, (SOCKADDR*)&remoteAddr, &nAddrlen);
if (ret > 0)
{
revdata[ret] = 0x00;
printf("接收到一个连接:%s \n", inet_ntoa(remoteAddr.sin_addr));
printf("\n");
printf("客户:");
printf(revdata);
printf("\n");
}
if (strcmp(revdata, "bye") == 0)
break;
//发送数据
printf("我:");
// scanf("%s", senddata);
sendto(serSocket, senddata, strlen(senddata), 0, (SOCKADDR*)&remoteAddr, nAddrlen);
}
closesocket(serSocket);
WSACleanup();
return 0;
}
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main(void)
{
WORD sockVision = MAKEWORD(2, 2);
WSADATA wsadata;
SOCKET sclient;
struct sockaddr_in clientAddr;
char senddata[255];
char revdata[255];
int ret = -1;
int len = -1;
if (WSAStartup(sockVision, &wsadata) != 0)
{
printf("WSA初始化失败\n");
return 0;
}
sclient = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sclient == INVALID_SOCKET)
{
printf("socket客户端创建失败\n");
return 0;
}
clientAddr.sin_family = AF_INET;
clientAddr.sin_port = htons(8888);
clientAddr.sin_addr.S_un.S_addr = INADDR_ANY;// inet_addr("192.168.1.105");
len = sizeof(clientAddr);
while (1)
{
printf("我:");
scanf("%s", senddata);
sendto(sclient, senddata, strlen(senddata), 0, (SOCKADDR*)&clientAddr, len);
if (strcmp(senddata, "bye") == 0)
break;
//ret = recvfrom(sclient, revdata, 255, 0, (SOCKADDR*)&clientAddr, &len);
if (ret > 0)
{
revdata[ret] = 0x00;
printf("\n");
printf("服务器:");
printf(revdata);
printf("\n");
}
}
closesocket(sclient);
WSACleanup();
system("pause");
return 0;
}