套接字编程_无连接
介绍:A 作为服务器,B 作为客户端,B 键入文字发送给 A,A 收到后将暗号回复给 B 表示确认接收。
A.cpp:
#include <stdio.h> // Winsock是一个基于Socket模型的API #include <winsock2.h> #include <windows.h> // 要包含头文件 Winsock2.h,就需要调用库 ws2_32.lib #pragma comment( lib, "ws2_32.lib" ) /* Winsock启动测试,检查系统协议栈安装情况 */ void TestWinsockStartup(); int main( int argc, char* argv[] ) { // 0. Winsock启动测试 TestWinsockStartup(); // 1. 创建服务器端通信套接字 SOCKET ss = socket( AF_INET, SOCK_DGRAM, 0 ); struct sockaddr_in ser, cli; int len = sizeof(cli); // 2. 将创建的套接字与服务器地址进行绑定 ser.sin_family = AF_INET; ser.sin_port = htons( 3256 ); // 端口号 ser.sin_addr.s_addr = htonl( INADDR_ANY ); if( bind(ss, (LPSOCKADDR)&ser, sizeof(ser)) == SOCKET_ERROR ){ printf("bind() Failed: %d\n", WSAGetLastError()); return -1; } while(1) { // 接收信息 char buf[50]; recvfrom(ss, buf, sizeof(buf), 0, (struct sockaddr*)&cli, &len); printf("%s", buf); // 发送信息 (暗号) strcpy(buf, "hello"); sendto(ss, buf, sizeof(buf), 0, (struct sockaddr*)&cli, len); } closesocket(ss); WSACleanup(); return 0; } /* Winsock启动测试,检查系统协议栈安装情况 */ void TestWinsockStartup() { WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(2, 2); if( WSAStartup(wVersionRequested, &wsaData) != 0 ) { printf("Winsock初始化错误!\n"); return ; } if( wsaData.wVersion != wVersionRequested ) { printf("Winsock版本不匹配!\n"); WSACleanup(); return ; } // printf("WinsockDLL正确加载!\n"); }
B.cpp:
#include <stdio.h> // Winsock是一个基于Socket模型的API #include <winsock2.h> #include <windows.h> // 要包含头文件 Winsock2.h,就需要调用库 ws2_32.lib #pragma comment( lib, "ws2_32.lib" ) /* Winsock启动测试,检查系统协议栈安装情况 */ void TestWinsockStartup(); int main( int argc, char* argv[] ) { // 0. Winsock启动测试 TestWinsockStartup(); // 1. 创建服务器端通信套接字 SOCKET ss = socket( AF_INET, SOCK_DGRAM, 0 ); struct sockaddr_in addr; // 2. 将创建的套接字与服务器地址进行绑定 addr.sin_family = AF_INET; addr.sin_port = htons( 3256 ); // 端口号 addr.sin_addr.s_addr = inet_addr( "127.0.0.1" ); while(1) { // 发送信息 char buf[50]; scanf("%s", buf); sendto(ss, buf, sizeof(buf), 0, (struct sockaddr*)&addr, sizeof(addr)); // 接收信息 (暗号) int len = sizeof(addr); recvfrom(ss, buf, sizeof(buf), 0, (struct sockaddr*)&addr, &len); // 对暗号 if( strcmp(buf, "hello") == 0 ) { printf("接收\n"); } else { printf("丢失\n"); } } closesocket(ss); WSACleanup(); return 0; } /* Winsock启动测试,检查系统协议栈安装情况 */ void TestWinsockStartup() { WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(2, 2); if( WSAStartup(wVersionRequested, &wsaData) != 0 ) { printf("Winsock初始化错误!\n"); return ; } if( wsaData.wVersion != wVersionRequested ) { printf("Winsock版本不匹配!\n"); WSACleanup(); return ; } // printf("WinsockDLL正确加载!\n"); }

浙公网安备 33010602011771号