Windows Socket阻塞模式基本模型
2009-12-27 13:32
274 查看
Server.c
Client.c
这是我做的Win socket 阻塞模式的基本结构!
因为近期正在看关于这方面的东西。经过几天的努力。。终于做出来个基本的东西了。里面还有很多东西不完善。写出来留信念!!
#include <winsock.h> #include <windows.h> #include <stdio.h> #include <string.h> int main(void) { WSADATA wd; SOCKET listenSocket; SOCKET connSocket; SOCKADDR_IN saListen; SOCKADDR_IN saConn; char buffer[100]; int port=5000; int i=0; int len=sizeof(saConn); WSAStartup(MAKEWORD(2,2),&wd); listenSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); memset(&saListen, 0, sizeof(saListen)); saListen.sin_family=AF_INET; saListen.sin_port=htons(port); saListen.sin_addr.S_un.S_addr=INADDR_ANY; if ((bind(listenSocket,(SOCKADDR *)&saListen,sizeof(saListen)))==SOCKET_ERROR) { printf("%d/n",WSAGetLastError()); WSACleanup(); return 0; } len = sizeof(saConn); if ((listen(listenSocket,5))==SOCKET_ERROR) { printf("2%d/n",WSAGetLastError()); WSACleanup(); return 0; } if ((connSocket=accept(listenSocket,(SOCKADDR *)&saConn,&len))==INVALID_SOCKET) { printf("%d/n",WSAGetLastError()); WSACleanup(); return 0; } while(1) { i=0; if ((i=recv(connSocket,buffer,100,0))==SOCKET_ERROR) { printf("5/n"); closesocket(listenSocket); getchar(); return 0; } buffer[i]='/0'; printf("/n%s/n",buffer); } closesocket(listenSocket); closesocket(connSocket); WSACleanup(); }
Client.c
#include <winsock.h> #include <stdio.h> #include <windows.h> #include <string.h> int main(void) { WSADATA wd; SOCKET cSocke; SOCKADDR_IN sa; int port=5000; char buffer[100]; int ret=0; int len=0; if(WSAStartup(MAKEWORD(2,2),&wd)!=0) printf("0/n"); if((cSocke=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET) { printf("1/n"); WSACleanup(); return 0; } memset(&sa, 0, sizeof(sa)); sa.sin_family=AF_INET; sa.sin_port=htons(port); sa.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); if ((ret=connect(cSocke,(struct sockaddr*)&sa,sizeof(sa)))==SOCKET_ERROR) { printf("a%d/n",WSAGetLastError()); printf("%d/n",ret); WSACleanup(); return 0; } while (1) { memset(buffer,0, sizeof(buffer)); printf("%d/n",sizeof(buffer)); scanf("%s",buffer); len=strlen(buffer); buffer[len]='/0'; if ((send(cSocke,buffer,strlen(buffer),0))==SOCKET_ERROR) { printf("3/n"); WSACleanup(); return 0; } printf("%d",strlen(buffer)); } closesocket(cSocke); WSACleanup(); }
这是我做的Win socket 阻塞模式的基本结构!
因为近期正在看关于这方面的东西。经过几天的努力。。终于做出来个基本的东西了。里面还有很多东西不完善。写出来留信念!!
相关文章推荐
- Windows Socket I/O模型之 阻塞模式
- IO通信模型(一)同步阻塞模式BIO(Blocking IO)
- 8_14 日学到的新知识(简单的工厂模式的实现, MVC 模式的基本概念,软件工程中的四种开发模型, 以及软件工程中的一些小知识点)
- 生产者/消费者模式(阻塞队列) 一个类似于监听者模式的并发模型
- 生产者/消费者模式(阻塞队列) 一个经典的并发模型
- 免费商业模式的四种基本模型
- [网络编程]_[Socket]_[Socket 阻塞模式(blocking)下的 I/O模型(model) 之 Select 模型(model)初探]
- linux下服务器程序的几种基本模型-【一】单/多进程模式/多进程池(prefork)模型
- 一种无阻塞高并发任务模型(从你去医院看病的模式描述)
- Windows Socket I/O模型之 Select模式
- 生产者/消费者模式(阻塞队列) 一个经典的并发模型
- 阻塞模式下,对基本套接字函数的理解
- 免费商业模式的四种基本模型
- [网络编程]_[Socket]_[Socket 阻塞模式(blocking)下的 I/O模型(model) 之 Select 模型(model)初探]
- Windows Socket I/O模型之 WSAAsyncSelect模式
- linux下服务器程序的几种基本模型-【一】单/多进程模式/多进程池(prefork)模型
- Windows Socket I/O模型之 WSAEventSelect模式
- 生产者/消费者模式(阻塞队列) 一个经典的并发模型
- Windows Socket I/O模型之 重叠I/O事件通知模式
- ListView之BaseAdapter的基本使用以及ViewHolder模式