数据报套接字C的简单实现。
编译环境:
visual studio 2019。
原理:
流程:
1.先打开服务器的exe。
2.在命令行打开,客户端exe,后面跟上127.0.0.1
或者 在visual studio里面的调试中加上带命令行参数 127.0.0.1。
结果展示:
客户端:
服务器:
代码:
客户端:
//#include"stdafx.h"
#define WIN32_LEAN_AND_MEAN
#include<winsock2.h>
#include<ws2tcpip.h>
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
#include<iostream>
#pragma comment (lib,"Ws2_32.lib")
#pragma comment (lib,"Mswsock.lib")
#pragma comment (lib,"AdvApi32.lib")
//定义默认的缓冲区长度和端口号
#define DEFAULT_BUFLEN 1024
#define DEFAULT_PORT "27015"
#define maxn 5000
#define ConnectLessSocket clsocket
using namespace std;
int _cdecl main(int argc, char** argv)
{
WSADATA wsaData;
int iResult;
SOCKET ConnectLessSocket = INVALID_SOCKET;
struct addrinfo* result = NULL, hints;
struct sockaddr_in serveraddr,reply_addr;
int addrlen = sizeof(sockaddr_in);
char buf[] = "this is a test";
int recvbuflen = DEFAULT_BUFLEN;
char recvbuf[DEFAULT_BUFLEN];
//验证参数的合法性
if (argc != 2)
{
printf("usage: %s server-name\n", argv[0]);
return 1;
}
//初始化WinSock
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0)
{
printf("WSAStartup failed with error: %d\n", WSAGetLastError());
return 1;
}
ZeroMemory(&hints, sizeof(hints));
//声明I