欢迎来到天天文库
浏览记录
ID:58368895
大小:86.00 KB
页数:9页
时间:2020-04-29
《C语言版-Socket通信原理(附运行截图).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、简单的客户/服务器程序设计与实现实验目的及要求:1、熟悉C编程环境。2、熟悉Socket编程原理,掌握简单的套接字编程。实验设备:硬件:PC机软件:CodeBlocks实验内容及步骤:什么是Socket?Socket英文直译为“孔或插座”,也称为套接字。用于描述IP地址和端口号,是一种进程间的通信机制。你可以理解为IP地址确定了网内的唯一计算机,而端口号则指定了将消息发送给哪一个应用程序(大多应用程序启动时会主动绑定一个端口,如果不主动绑定,操作系统自动为其分配一个端口)。Socket的类型Stream:一种流式Socket,针对于面向连接的TCP服务应用,安全,但效
2、率低。(本文重点)Datagram:数据报式的Socket,针对于无连接的UDP服务应用,不安全(丢失、顺序混乱,往往在接收端要分析完整性、重排、或要求重发),但效率高。Socket程序一般应用模式及运行流程服务器端会启动一个Socket,开始监听端口,监听客户端的连接信息,我们称之为WatchSocket。客户端Socket连接服务器端的监听Socket,一旦成功连接,服务器端会立刻创建一个新的Socket负责与客户端进行通信,之后,客户端将不再与WatchSocket通信。WatchSocket继续监听可能会来自其他客户端的连接。上述过程就像是实现了一次三方会谈。
3、服务器端的Socket至少会有2个。一个是WatchSocket,每成功接收到一个客户端的连接,便在服务器端创建一个通信Socket。客户端Socket指定要连接的服务器端地址和端口,创建一个Socket对象来初始化一个到服务器的TCP连接。编写用TCP协议实现的Client端和Server端程序并调试通过。程序分两部分:客户程序和服务器程序。工作过程是:服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。或者服务器接收键盘
4、输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。9服务器端代码:#include#include#pragmacomment(lib,"ws2_32")#defineN20structstu{charno[20];charname[20];}d[N];intfd(char*stum,intn){inti,j;FILE*fp;char*res="";fp=fopen("D:\student.txt","r");for(i=0;i5、,&d[i].name);fclose(fp);for(j=0;j6、ATAwsaData;WSAStartup(MAKEWORD(2,2),&wsaData);SOCKETs=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);structsockaddr_insockaddr;sockaddr.sin_family=PF_INET;sockaddr.sin_addr.S_un.S_addr=inet_addr("192.168.1.118");sockaddr.sin_port=htons(8000);bind(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));listen7、(s,1);printf("listeningonport[%d].",8000);inti=stuno();printf("%d",i);while(TRUE){SOCKADDRclientAddr;intsize=sizeof(SOCKADDR);SOCKETclientsocket;clientsocket=accept(s,&clientAddr,&size);printf("***SYS***Newclienttouched.");char*msg="Hello,myclient.r";send(clientsocket,ms
5、,&d[i].name);fclose(fp);for(j=0;j6、ATAwsaData;WSAStartup(MAKEWORD(2,2),&wsaData);SOCKETs=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);structsockaddr_insockaddr;sockaddr.sin_family=PF_INET;sockaddr.sin_addr.S_un.S_addr=inet_addr("192.168.1.118");sockaddr.sin_port=htons(8000);bind(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));listen7、(s,1);printf("listeningonport[%d].",8000);inti=stuno();printf("%d",i);while(TRUE){SOCKADDRclientAddr;intsize=sizeof(SOCKADDR);SOCKETclientsocket;clientsocket=accept(s,&clientAddr,&size);printf("***SYS***Newclienttouched.");char*msg="Hello,myclient.r";send(clientsocket,ms
6、ATAwsaData;WSAStartup(MAKEWORD(2,2),&wsaData);SOCKETs=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);structsockaddr_insockaddr;sockaddr.sin_family=PF_INET;sockaddr.sin_addr.S_un.S_addr=inet_addr("192.168.1.118");sockaddr.sin_port=htons(8000);bind(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));listen
7、(s,1);printf("listeningonport[%d].",8000);inti=stuno();printf("%d",i);while(TRUE){SOCKADDRclientAddr;intsize=sizeof(SOCKADDR);SOCKETclientsocket;clientsocket=accept(s,&clientAddr,&size);printf("***SYS***Newclienttouched.");char*msg="Hello,myclient.r";send(clientsocket,ms
此文档下载收益归作者所有