网络编程模型综述 1.阻塞I/O:Socket为阻塞模式时不能立即完成的I/O操作使线程进入等待。 2.非阻塞I/O:Socket为非阻塞模式时不能立即完成的I/O操作返回特定的错误,线程可以进行其他的操作,但需要不断地查询I/O操作结果。 3.重叠I/O:如select。多个select共用同一个等待机制。 4.信号驱动:I/O操作完成后设置信号,获得信号的线程再获取数据进行处理。 5.异步I/O:类似回调,回调线程不需再获取数据,直接对数据进行处理。 Windows Socket API(http://technet.microsoft.com/zh-cn/query/ms741394%28v=vs.90%29) int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); int WSACleanup(void); SOCKET socket(int af, int type, int protocol); int closesocket(SOCKET s); int send(SOCKET s, const char *buf, int len, int flags); int recv(SOCKET s, const char *buf, int len, int flags); // 以下由客户端调用 int connect(SOCKET s, const struct sockaddr *name, int namelen); // 以下由服务器调用 int bind(SOCKET s, const struct sockaddr *name, int namelen); int listen(SOCKET s, int backlog); SOCKET accept(SOCKET s, struct sockaddr *addr, int *addrlen);