博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows中使用socket实现网络编程
阅读量:4165 次
发布时间:2019-05-26

本文共 1841 字,大约阅读时间需要 6 分钟。

1、客户端和服务端最基本的数据交互过程如下图所示,按照图中的API调用顺序:

2、最简单的测试用例:

(1)客户端

#include 
#include
#include
#pragma comment(lib, "ws2_32.lib") //加载 ws2_32.dllint Test_Main_Case001(int argc, char *argv[]){ /* 初始化DLL */ WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); /* 1 创建套接字 */ SOCKET clientsock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); /* 2 向服务器发起请求 */ sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充 sockAddr.sin_family = PF_INET; sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); sockAddr.sin_port = htons(1234); connect(clientsock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); /* 3 接收服务器传回的数据 */ char szBuffer[120] = { 0 }; recv(clientsock, szBuffer, sizeof(szBuffer), NULL); /* 输出接收到的数据 */ printf("Message form server: %s\n", szBuffer); /*关闭套接字 */ closesocket(clientsock); WSACleanup(); system("pause"); return 0;}

(2)服务端:

#include 
#include
#pragma comment (lib, "ws2_64.lib") //加载 ws2_32.dllint Test_Main_Case001(int argc, char *argv[]){ /* 初始化 DLL */ WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); /* 创建套接字 */ SOCKET serverSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); /* 绑定套接字 */ sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充 sockAddr.sin_family = PF_INET; //使用IPv4地址 sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具体的IP地址 sockAddr.sin_port = htons(1234); //端口 bind(serverSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); /* 进入监听状态 */ int result = 0; result = listen(serverSock, 20); /* 接收客户端请求 */ SOCKADDR clientAddr; int nSize = sizeof(SOCKADDR); SOCKET clientSock = accept(serverSock, (SOCKADDR*)&clientAddr, &nSize); /* 向客户端发送数据 */ char *str = "Hello World!"; send(clientSock, str, strlen(str) + sizeof(char), NULL); /* 关闭套接字 */ closesocket(clientSock); closesocket(serverSock); //终止 DLL 的使用 WSACleanup(); return 0;}

 

转载地址:http://mcqxi.baihongyu.com/

你可能感兴趣的文章
算法入门-循环结构程序设计
查看>>
算法入门-数组和字符串
查看>>
Android进阶系列-手写高并发网络访问框架
查看>>
Java基础之线程安全基本数据类型
查看>>
Android进阶系列-手写高并发图片加载框架
查看>>
Android基础系列-大纲汇总
查看>>
Android测试系列(一)-Monkey
查看>>
Android动画系列(一) - 基础动画ViewAnimation
查看>>
C++程序员技术需求规划(发展方向)
查看>>
TinyXml2解析xml用法例子
查看>>
Linux 虚拟内存和物理内存
查看>>
产品和技术,你选对了吗?
查看>>
哈希表(Hash Table)-哈希概述
查看>>
Filebench的安装及使用
查看>>
Ubuntu下 E: Could not get lock /var/lib/apt/lists/lock - open (11: Recource temporarily unavailable)
查看>>
Linux-mmap映射物理内存到用户空间
查看>>
Ext4文件系统三种日志模式——journal、ordered、writeback
查看>>
Linux挂载ext4根文件系统为journal模式
查看>>
linux内核引导参数解析及添加
查看>>
长短期记忆人工神经网络(LSTM)及其tensorflow代码应用
查看>>