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

来源:互联网 发布:hp128fn网络打印设置 编辑:程序博客网 时间:2024/05/02 02:33

今天开始学习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()