C语言版-Socket通信原理(附运行截图).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 3 1 简单的客户/服务器程序设计与实现 实验目的及要求: 1、熟悉C编程环境。 2、熟悉Socket编程原理,掌握简单的套接字编程。 实验设备: 硬件:PC机 软件:CodeBlocks 实验内容及步骤: 什么是 Socket? Socket 英文直译为“孔或插座”,也称为套接字。用于描述 IP 地址和端口号,是一种进程间的通信机制。你可以理解为 IP 地址确定了网内的唯一计算机,而端口号则指定了将消息发送给哪一个应用程序(大多应用程序启动时会主动绑定一个端口,如果不主动绑定,操作系统自动为其分配一个端口)。 Socket 的类型 Stream:一种流式 Socket,针对于面向连接的 TCP 服务应用,安全,但效率低。(本文重点) Datagram:数据报式的 Socket,针对于无连接的 UDP 服务应用,不安全(丢失、顺序混乱,往往在接收端要分析完整性、重排、或要求重发),但效率高。 Socket 程序一般应用模式及运行流程 服务器端会启动一个 Socket,开始监听端口,监听客户端的连接信息,我们称之为 Watch Socket。 客户端 Socket 连接服务器端的监听 Socket,一旦成功连接,服务器端会立刻创建一个新的 Socket 负责与客户端进行通信,之后,客户端将不再与 Watch Socket 通信。 Watch Socket 继续监听可能会来自其他客户端的连接。 上述过程就像是实现了一次三方会谈。服务器端的 Socket 至少会有 2 个。一个是 Watch Socket,每成功接收到一个客户端的连接,便在服务器端创建一个通信 Socket。客户端 Socket 指定要连接的服务器端地址和端口,创建一个 Socket 对象来初始化一个到服务器的 TCP 连接。 编写用TCP协议实现的Client端和Server端程序并调试通过。 程序分两部分:客户程序和服务器程序。 工作过程是: 服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。或者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。 服务器端代码: #include stdio.h #include winsock2.h #pragma comment (lib, ws2_32) #define N 20 struct stu { char no[20]; char name[20]; }d[N]; int fd(char *stum,int n) { int i,j; FILE *fp; char* res=; fp=fopen(D:\\student.txt,r); for( i=0;in;i++) fscanf(fp,%s\t%s,d[i].no,d[i].name); fclose(fp); for( j=0;jn;j++) { if(strcmp(d[j].no,stum)==0) {res=d[j].name; break;} res=no this student!; } return res; } int stuno() { FILE *fp; fp=fopen(D:\\student.txt,r); int i=1; 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;

文档评论(0)

139****4073 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档