socket程实验.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
socket程实验

计算机通信网络实验socket编程实验学院:班级:学号:姓名:2012年11月4日实验目的熟练掌握socket编程命令实验内容简单的客户机/服务器程序的实现使用套接字接口在TCP连接上发送消息还用到了其他的UNIX网络功能该应用允许用户在一端的机器上输入并把文本发送给另一端机器的用户它是UNIX中talk的一个简化版本,类似于WEB 聊天室的核心程序。客户端客户端使用远端的机器名作为参数它调用UNIX程序gethostbyname把该名字转化为远端主机的IP地址。接着构造套接字接口所需的地址数据结构(sin)。这个数据结构表明我们将一直用套接字与因特网(AF_INET)连接。在这个例子中,我们用TCP端口号5432作为共知的服务器端口号;它恰好不是分配给其他因特网服务的端口号。建立连接的最后一步是调用socket和connect。一旦connect操作返回,建立起连接,客户程序将进入主循环,不断从标准输入读文本并通过套接字发送。服务器服务器的实现也很简单:填上自己的端口号(SERVER_PORT)构造地址数据结构。它并不指明IP地址,从而使应用程序可以接受来自本地任一IP地址的连接。服务器执行与被动打开有关的初始步骤:建立一个套接字,将它绑定到本地地址设置允许同时连接的最大数。主循环等待远端主机试图与之连接,当远端有一台主机试图与之连接时,它就接收并输出连接上送来的字符。sockets编程基础知识网络编程就是通过计算机网络与其他程序进行通信的程序,socket编程是网络编程的主流工具。socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制。尽管应用开发人员很少需要在该层编写代码,但是理解socket API还是非常重要的。主要有两点原因:第一,高层设施是构建于socket API之上的,它们是利用socket API提供的操作来实现。第二,对于响应时间要求较高或运行于有限资源平台上的应用,甚至socket API是唯一可用的进程间通信设施。应用程序通信方式socket API出现于20世纪80年代早期,作为Berkeley Unix(BSD 4.2)操作系统程序库来通过进程间通信功能。现在主流操作系统都提供socket API。在基于Unix系统中,如BSD、Linux系统,socket API是操作系统内核的一部分。在MS-DOS、Windows OS、OS/2等操作系统中,socket API是以程序库形式提供的,如在Windows系统中,socket API被称为Winsock。Socket接口规范可以适用多种通讯协议。主要是TCP/IP。TCP/IP是计算机互联最常适用的网络通讯协议。TCP/IP的核心部分由网络操作系统的内核实现,应用程序通过编程接口来访问TCP/IP。TCP/IP使用一个网络地址和一个服务端口号来惟一地标识设备。网络地址标识网络上的特定设备。端口号标识要连接到的该设备上的特定服务。网络通讯的基本模式是:每一台通讯的主机都有一个本网络环境中惟一的IP地址一台主机上往往有多个通讯程序存在,每个这样的程序都要占用一个通讯端口因此,一个IP地址,一个通讯端口,就能确定一个通讯程序的位置。基于C的socket编程相关数据结构sockaddr结构structsockaddr{unsigned short sa_family;/*地址族,AF_xxx有IPV4与IPV6等*/char sa_data[14];/*14字节的协议地址*/};sa_family一般为AF_INET,表示Internet协议族,如是AF_UNIX表示UNIX协议簇;sa_data中包含该socket的IP地址和端口号。in_add结构in_add结构可用来存储四字节的IP地址structin_addr{unsigned longs_addr;};sockaddr_in结构 structsockaddr_in{short intsin_family;/*地址族*/unsigned short intsin_port;/*端口号*/structin_addsin_addr;/*IP地址*/unsigned char sin_zero[8]; /*填充0以保持与structsockaddr同样大小*/};该结构中sin_zero使得sockaddr和sockaddr_in指针类型相互转换;sin_port和sin_addr必须是网络字节顺序,因为它们被封装在包的IP和UDP层,sin_family不发送到网络上可以是本机字节顺序。基于C的socket编程相关函数socket()函数该函数用于根据指定的地址族、数据类型和协议来分配一个套接字的描述字及其所用的资源。socket函数原型为:int socket

文档评论(0)

173****7830 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档