Client
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <Windows.h>
#pragma comment(lib, "ws2_32.lib")
#define MAXLINE 50
typedef struct sockaddr SA;
int main()
{
int sock;
SOCKADDR_IN servaddr;
char buf[MAXLINE] = "hello Server";
WSAData wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
if((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
{
printf("fail to socket\n");
exit(-1);
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
servaddr.sin_port = htons(8888);
if(connect(sock, (SA *)&servaddr, sizeof(servaddr)) < 0)
{
printf("fail to connect\n");
exit(-1);
}
//sendto(sockfd, buf, sizeof(buf), 0, (SA *)&servaddr, sizeof(servaddr));
send(sock, buf, sizeof(buf), 0);// 不需要sendto
memset(buf, 0 , sizeof(buf));
//recvfrom(sockfd, buf, MAXLINE, 0, NULL, NULL);
recv(sock, buf, MAXLINE, 0); // 不需要recvfrom
printf("recv from server:%s\n",buf);
WSACleanup();
Sleep(100000);
return 0;
}
Server
#include<stdio.h>
#include<stdlib.h>
#include <Windows.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")
#define MAXLINE 50
typedef struct sockaddr SA;
int main(int argc,char **argv)
{
SOCKET sock;
int peerlen;
SOCKADDR_IN myaddr, peeraddr;
char buf[MAXLINE];
WSAData wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
if((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) <0)
{
printf("fail to socket\n");
exit(-1);
}
memset(&myaddr, 0, sizeof(myaddr));
myaddr.sin_family = AF_INET;
myaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
myaddr.sin_port = htons(8888);
if(bind(sock, (SA *)&myaddr, sizeof(SOCKADDR)) < 0)
{
printf("fail to bind,GetLastError = %d\n", GetLastError());
exit(-1);
}
while(1)
{
peerlen=sizeof(peeraddr);
if (recvfrom(sock, buf, sizeof(buf), 0, (SA *)&peeraddr, &peerlen) > 0)
{
printf("connection from %s, port %d\n%s\n", inet_ntoa(peeraddr.sin_addr), ntohs(peeraddr.sin_port), buf);
sendto(sock, buf, sizeof(buf), 0, (SA *)&peeraddr, sizeof(peeraddr));
}
}
WSACleanup();
return 0;
}
Server:
Client: