网络编程学习笔记(一)-----socket

本文详细介绍了Linux环境下C++网络编程的基础概念,包括数据类型、网络连接基本过程及服务器与客户端的实现方法。

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

今天开始学习Linux的C++网络编程。

 

以前也用过一点socket,但是没有总结过,今天重新复习,然后总结之。

 

首先介绍一些数据类型:

 

sockaddr_in

sockaddr_un

sockaddr

 

 

这些结构体的定义虽然看起来不同,但是长度是相同的,而且对于处理而言,sockaddr_in显得最为方便,但是为了兼容链接,bind等函数的接口,需要做一个安全的强制类型转换 :

 

(struct sockaddr*)&some_sockaddr_in_definition

 

剩下一个要点就是理解网络连接的基本过程:

对于服务器端,首先创建socket,然后填写socketaddr_in的内容,这里需要注意的是sin_port的填写需要通过htons()函数对port进行转换。

//htons函数将一个16位数从主机字节顺序转换成网络字节顺序

 

1 bind()绑定端口

 

2 listen()

 

3 accept()等待client的连接

 

4 解析用户的数据

 

5 send()发送给用户数据

 

循环执行3-5

 

代码如下:

 

对于客户端来说,情况要更简单一些:

 

1 构造socket,socketaddr_in,这些是和server相同的,不同的是需要构造一个hostent类型的数据

 

该实体的构造可以调用函数gethostbyname()(或者为gethostbyaddr())函数来实现。

 

 

2 connect()

 

3 sent()

 

4 recv()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值