天天看点

1、网络编程之基于TCP

一、一些概念 

1、Socket是连接应用程序与网络驱动程序的桥梁,Socket在应用程序中创建,通过绑定操作与驱动程序建立关系。

网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂。网络体系结构解决互质性问题彩是分层方法。

网络的7层:

应用层--->为应用程序提供网络通信服务

表示层--->数据表示

会话层--->主机间通信(两个应用进程间)

传输层--->端到端的连接,隔离网络的上下层协议,使得网络应用与下层协议无关

网络层--->寻找最优路径,转发数据包

数据链路层--->无差错的链路连接

物理层--->二进制传输

2、端口

是一种抽象的软件结构,包括一些数据结构和I/O缓冲区。与协议有关。

3、套接字存在于通信区域中。通信区域也叫地址族,它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性综合在一起。

为保证数据的正确性,在网络协议中需要制定网络字节顺序,采用统一的网络字节顺序。

二、socket的连接方式

1、基于TCP的

服务器端程序:

1)加载套接字库

2)创建套接字(socket)。

3)将套接字绑定到一个本地地址和端口上(bind)。

4)将套接字设为监听模式,准备接收客户请求(listen)。

5)等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。

6)用返回的套接字和客户端进行通信(send/recv)。

7)返回,等待另一客户请求。

8)关闭套接字。

客户端程序:

3)向服务器发出连接请求(connect)。

4)和服务器端进行通信(send/recv)。

5)关闭套接字。

服务器端调用accept函数时会等待,连接。

客客端调用connect函数时,发出连接请求,服务器端接受,这样双方就建立起了连接。

2、相关函数

(1)htonl把一个u_long类型从主机字节序转换为网络字节序

(2)htons把一个u_short类型从主机字节序转换为网络字节序(2Bytes)

WSAStartup把其加载的苦版本的有关信息添在这个结构中对于每一个WSAStartup的成功调用,最后都应该调用WSACleanUp以便释放资源如果调用成功,将返回套接字描述符。如果调用失败,将返回INVALID_SOCKET,错误信息可通过WSAGetLastError返回。

inet_ntoa:The Windows Sockets inet_ntoa function converts an (Ipv4) Internet network address into

 a string in Internet standard dotted format.

net_addr:The Windows Sockets inet_addr function converts a string containing an (Ipv4) Internet

 Protocol dotted address into a proper address for the IN_ADDR structure.

三、例程:

服务器端:

参考

[1]孙鑫的《VC++深入》

[2] 对于socket,讲得非常好

<a href="http://www.cnblogs.com/goodcandle/archive/2005/12/10/socket.html#2025579">http://www.cnblogs.com/goodcandle/archive/2005/12/10/socket.html#2025579</a>

继续阅读