网络连接(二)
来源:互联网 发布:连点器的编程 编辑:程序博客网 时间:2024/05/16 10:52
说明:实现简单的TCP网络连接,服务器与客户端回声。
—————————————-服务器—————————————-
文件名称:Server.c
运行方式:命令行
#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <string.h>#define BUF_SIZE 1024int main(int argc,char *argv[]){ WSADATA wsaData; SOCKET hServerSock,hClntSock; char message[BUF_SIZE]; int strlenth,i; SOCKADDR_IN servAddr,clntAddr; int clntAddrSize; if(argc!=2) { printf("please input <port> :%s\n",argv[0]); exit(0); } if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) printf("WSAStartup() error"); hServerSock=socket(AF_INET,SOCK_STREAM,0); if(hServerSock==INVALID_SOCKET) printf("socket() error"); memset(&servAddr,0,sizeof(servAddr)); servAddr.sin_family=AF_INET; servAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY); servAddr.sin_port=htons(atoi(argv[1])); if(bind(hServerSock,(SOCKADDR *)&servAddr,sizeof(servAddr))==SOCKET_ERROR) printf("bind() error"); if(listen(hServerSock,5)==SOCKET_ERROR) printf("listen() error!"); clntAddrSize=sizeof(clntAddr); for(i=0;i<5;++i) { hClntSock=accept(hServerSock,(SOCKADDR*)&clntAddr,&clntAddrSize); if(hClntSock==-1) printf("accept() error"); else printf("connected.....%d\n",i+1); while((strlenth=recv(hClntSock,message,BUF_SIZE,0))!=0) send(hClntSock,message,strlenth,0); closesocket(hClntSock); } closesocket(hServerSock); WSACleanup(); return 0;}
—————————————-客户端—————————————-
文件名称:Client.c
运行方式:命令行
#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <string.h>#define BUF_SIZE 1024int main(int argc,int *argv[]){ WSADATA wsaData; SOCKET clntSock; char message[BUF_SIZE]; int strlenth; SOCKADDR_IN servAddr; if(argc!=3) { printf("please input <IP> <Port> %s\n",argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) printf("WSAStartup() error!"); clntSock=socket(AF_INET,SOCK_STREAM,0); if(clntSock==INVALID_SOCKET) printf("socket() error!"); memset(&servAddr,0,sizeof(servAddr)); servAddr.sin_family=AF_INET; servAddr.sin_addr.S_un.S_addr=inet_addr(argv[1]); servAddr.sin_port=htons(atoi(argv[2])); if(connect(clntSock,(SOCKADDR *)&servAddr,sizeof(servAddr))==SOCKET_ERROR) printf("connect error!"); else printf("connected ....\n"); while(1) { printf("input message(Q to quit):\n"); gets(message); if(!strcmp(message,"q")||!strcmp(message,"Q")||!strcmp(message,"\0")) break; send(clntSock,message,strlen(message),0); strlenth=recv(clntSock,message,BUF_SIZE-1,0); message[strlenth]=0; printf("Message from server:%s\n",message); } closesocket(clntSock); WSACleanup(); return 0;}
0 0
- 网络连接(二)
- oracle 网络连接类型(二)
- VirtualBox 网络连接方式研究(二)
- HTTP网络连接相关知识整理(二):网络IO
- Android 判断网络连接(二)
- Python学习 网络编程(二) UDP连接
- Hadoop 集群 傻瓜式搭建手记 (二)网络连接
- android网络连接系列片之(二)----httpurlconnection
- Android 项目(详解二)—— 网络连接(1)
- Android 项目实践(二)——网络连接
- Android 项目(详解二)—— 网络连接(2)
- 网络是怎样连接的学习笔记(二)
- Android网络连接判断与处理(二)
- 网络连接(一)
- 网络编程(二):先判断错误还是先接受连接?
- 网络基本功(二十三):Wireshark抓包实例诊断TCP连接问题
- 网络基本功(二十三):Wireshark抓包实例诊断TCP连接问题
- 网络基本功(二十三):Wireshark抓包实例诊断TCP连接问题
- ios-swift 自定义TabBarViewController
- 程序在vs2010下能运行,独立运行生成的exe文件时会崩溃。
- 一起talk C栗子吧(第一百六十四回:C语言实例--const关键字)
- java读取配置文件的方式
- 正式在CSDN安家咯
- 网络连接(二)
- const实现机制
- GCC参数详解
- 快排
- JAVA的对象类型转换
- 典型字符串匹配算法实现 - 单字符串匹配算法
- 319BulbSwitcher
- 20非常有用的Java程序片段
- (JAVA)跳台阶