




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上简单的客户/服务器程序设计与实现实验目的及要求:1、熟悉C编程环境。 2、熟悉Socket编程原理,掌握简单的套接字编程。实验设备:硬件:PC机软件:CodeBlocks实验内容及步骤:什么是 Socket? Socket 英文直译为“孔或插座”,也称为套接字。用于描述 IP 地址和端口号,是一种进程间的通信机制。你可以理解为 IP 地址确定了网内的唯一计算机,而端口号则指定了将消息发送给哪一个应用程序(大多应用程序启动时会主动绑定一个端口,如果不主动绑定,操作系统自动为其分配一个端口)。Socket 的类型Stream:一种流式 Socket,针对于面向连接的 TC
2、P 服务应用,安全,但效率低。(本文重点)Datagram:数据报式的 Socket,针对于无连接的 UDP 服务应用,不安全(丢失、顺序混乱,往往在接收端要分析完整性、重排、或要求重发),但效率高。Socket 程序一般应用模式及运行流程服务器端会启动一个 Socket,开始监听端口,监听客户端的连接信息,我们称之为 Watch Socket。客户端 Socket 连接服务器端的监听 Socket,一旦成功连接,服务器端会立刻创建一个新的 Socket 负责与客户端进行通信,之后,客户端将不再与 Watch Socket 通信。Watch Socket 继续监听可能会来自其他客户端的连接。上
3、述过程就像是实现了一次三方会谈。服务器端的 Socket 至少会有 2 个。一个是 Watch Socket,每成功接收到一个客户端的连接,便在服务器端创建一个通信 Socket。客户端 Socket 指定要连接的服务器端地址和端口,创建一个 Socket 对象来初始化一个到服务器的 TCP 连接。编写用TCP协议实现的Client端和Server端程序并调试通过。程序分两部分:客户程序和服务器程序。工作过程是: 服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在
4、屏幕上显示出来。或者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。 服务器端代码:#include <stdio.h>#include <winsock2.h>#pragma comment (lib, "ws2_32")#define N 20struct stu char no20; char name20;dN;int fd(char *stum,int n) int i,j; FILE *fp; char* res="" fp=fopen("D:student.tx
5、t","r"); for( i=0;i<n;i+) fscanf(fp,"%st%s",&di.no,&); fclose(fp); for( j=0;j<n;j+) if(strcmp(dj.no,stum)=0) res=; break; res="no this student!" return res;int stuno() FILE *fp; fp=fopen("D:student.txt","r"); int i=1;
6、 char c; while(!feof(fp) while(c='n') i+; break; c=fgetc(fp); continue; fclose(fp); return i;int main() WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET s=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in sockaddr; sockaddr.sin_family=PF_INET; sockaddr.sin_addr.S
7、_un.S_addr=inet_addr("18");sockaddr.sin_port=htons(8000); bind(s, (SOCKADDR*)&sockaddr, sizeof(SOCKADDR); listen(s, 1); printf("listening on port %d.n", 8000); int i=stuno(); printf("%d",i); while(TRUE) SOCKADDR clientAddr; int size=sizeof(SOCKADDR); SOCK
8、ET clientsocket; clientsocket=accept(s, &clientAddr, &size); printf("*SYS* New client touched.n");char* msg="Hello, my client.rn" send(clientsocket, msg, strlen(msg)+sizeof(char), NULL);printf("*SYS* HELLO.n"); while(TRUE) char bufferMAXBYTE=0; recv(clientsocket
9、, buffer, MAXBYTE, NULL); printf("*Client* %sn", buffer); char* msg2=fd(buffer,i); send(clientsocket, msg2, strlen(msg)+sizeof(char), NULL); printf("*SYS* HELLO.n"); closesocket(clientsocket); closesocket(s);WSACleanup(); return 0;(第一次运行不成功,需要修改如下设置:Settings->Compiler settings
10、->other options添加 -std=c99Liner Settings->Linker settings->add C:软件CodeblocksMinGWliblibws2_32.a)客户端代码:#include <stdio.h>#include <winsock2.h>#include <Windows.h>#pragma comment (lib, "ws2_32")int main() Sleep(2000); WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &a
11、mp;wsaData); SOCKET s=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in sockaddr; sockaddr.sin_family=PF_INET; sockaddr.sin_addr.S_un.S_addr=inet_addr("18"); sockaddr.sin_port=htons(8000); connect(s, (SOCKADDR*)&sockaddr, sizeof(SOCKADDR); char bufferMAXBYTE=0; r
12、ecv(s, buffer, MAXBYTE, NULL); printf("*SERVER* %s", buffer); char szText256 ; while(TRUE) gets(szText) ; szText255 = '0' send(s, szText, strlen(szText), 0) ; char buffersMAXBYTE=0; recv(s, buffers, MAXBYTE, NULL); printf("*SERVER* %sn", buffers); closesocket(s); WSACleanup(); getchar(); exit(0);系统界面截图:本地ip:18服务端开启监听:客户端建立连接:服务端的回复:实验总结:socket()是用来创建一个,然后返回值是这个socket的描述符,很类似与文件描述符。bind()是用来为这个socket绑定server的IP+port地址,当然绑定之前要先对server的地址进行初始化。listen()的作用是监听cl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社会工作者中级考试高效学习试题及答案
- 计算机三级信息管理职业发展试题及答案
- 抗凝药物试题库及答案
- 深度思考的多媒体设计师考试试题及答案
- 初级社工监督与评估试题及答案
- 社会工作实务中的风险管理分析试题及答案
- 邯郸学院考试题库及答案
- 系统集成考试经验及试题及答案
- 土地法知识测试题及答案
- 网络维护员管理制度
- 江苏省徐州市2023-2024学年七年级下学期期末英语试卷(含答案解析)
- 江苏省住宅物业管理服务标准
- 2024年西藏初中学业水平考试生物试题(原卷版)
- 市场营销策划(本)-形考任务一(第一 ~ 四章)-国开(CQ)-参考资料
- 施工现场的交通与道路安全管理
- 2024新人教版初中英语单词表汇总(七-九年级)中考复习必背
- 常用危险化学品危险特性
- 酒店质检分析报告
- 我国圆明园文化遗产的资料
- 《血氨的检测与临床》课件
- AOI直通率持续提升报告
评论
0/150
提交评论