socket编程入门----知识总结

本文详细介绍了在Linux和Windows环境下使用Socket进行网络编程的方法。涵盖了必要的头文件、数据结构配置、网络字节序转换、IP地址处理等内容,并提供了面向连接(TCP)和面向无连接(UDP)的编程流程及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux

1.除了常规的头文件外,socket编程专门使用的头文件包括:<sys/socket.h>[申明socket编程中使用的各种api,如socket(),bind()],<netinet/in.h>[包含htons()],<arpa/inet.h>[包含inet_addr(),inet_ntoa()]。如图所示

编程需要文件结构

 

2.socket中使用struct sockaddr_in数据结构配置协议族、端口和IP(sin_family,sin_port,sin_addr.s_addr)三个应用程序最为关心的内容。同时在传参进入API函数的时候使用struct sockaddr转化。

3.TCP/IP使用AF_INET地址簇。

4.由于在网络上传输数据需要遵循网络字节序,因此使用htons(),htonl(),ntohs(),ntohl(),这几个函数进行本地字节序和网络字节序的转化.

5.IP地址由字符串转化为sin_addr.s_addr接受的格式使用inet_addr(),而将sin_addr转化为字符串使用inet_ntoa().

6.本地IP可使用INADDR_ANY宏表示.

7.面向连接的socket编程使用TCP协议,相对的编程使用的宏是SOCK_STREAM,流程如下.

 TCP

8.服务器端监听队列不能设置太小,最好大于等于10.(系统默认为20,若设置过小客户端连接时就会出现”connect refused”);

9. 面向无连接的socket编程使用UDP协议,相对的编程使用的宏是SOCK_DGRAM,流程如下.

UDP

Windows

1.windows下也可以采用socket进行网络编程,不过稍有不同。不同之处如下;

2.使用的头文件为<winsock2.h>,需在该工程的setting->link页面下的库模块处添加 ws2_32.lib”;

3. typedef UINT SOCKET;

4.程序初始化时要添加以下代码对winsocket进行初始化:

5.关闭套接字使用closesocket().之后还要使用WSACleanup()进行winsocket关闭工作;

 

PS:一些额外收获----------windows下换行符为“/r/nunixlinux下为“/n”而mac下为“/r”;对于mfc中新建的cpp文件可以不使用预编译头文件pch,方法是在该文件上右键选择setting,在“C/C++”页面下拉框中选择预编译头文件,设置为不需要预编译头文件。

 

以下附上练习代码:

服务器端:

客户端:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值