之前写过一次android的socket,最近用C++实现了windows下的客户端与服务器的聊天与传文件。
首先说一下什么是socket。socket(套接字)是一种独立于协议的网络编程接口,在OSI模型(对OSI七层模型不了解的自行Google)中主要集中于会话层和传输层。
详细来说,socket有四种类型:
- 字节流式(SOCK_STREAM):提供可靠的、面向连接的通信流,使用TCP协议保证数据传输的正确性和顺序性。
- 数据报(SOCK_DGRAM):定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的并且不保证可靠、无差错,使用数据报协议UDP。
- 有序分组(SOCK_SEQPACKET)
- 原始socket(SOCK_RAW)
在实际应用中,我们一般使用的windows socket规范是2.0版本的,它比1.0版本(只支持tcp/ip)支持更多的协议。
socket编程是有套路可言的:
server服务器部分:
1. initial socket dll
2. creat socket
3. bind socket with address
4. start listen(in this version, only a client)
5. accept client request
6. accept client data
7. send data to client
8. exit
client客户端部分:
1. ini