西安邮电大学Socket网络编程.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《高级Internet》实验报告 题目: Socket网络编程 学生姓名: 班 级: 软件1202班 学 号: 指导老师: 王文浪 成 绩: 西安邮电大学计算机学院 2015 年 4 月 27 日 实验目的 熟悉Socket网络编程 熟悉CS客户机模式 熟悉ServerSocket编写服务端 熟悉使用多线程机制处理业务 了解客户机之间通信方式 实验内容及要求 采用CS模式,通过客户机向服务器端发送消息; 采用Socket来实现客户机之间的网络通信; 通过ServerSocket创建服务端来处理接受客户机请求; 通过多线程方式来处理客户机之间的通信请求; 实现通信的界面窗口; 实验内容有发送私聊消息、向选中用户发送文件、用户接受文件。 实验过程 1.首先学习了在JAVA语言中TCP/IP协议下的Socket网络模式图如1.1所示 图1.1TCP/IP协议下的Socket网络模式图 由图1.1可以得到,Socket通信的步骤如下: 在服务器端创建一个ServerSocket对象并且指定端口号。 运行ServerSocket的accept()方法,等候客户端的请求。 客户端创建一个Socket对象,指定计算机的地址和端口号,向服务器端发出连接请求。 服务器端接收到来自客户端的请求后,创建Socket对象与客户端建立连接。 服务器端和客户端分别建立输入输出流进行数据传输。 通信结束后,服务器端和客户端分别关闭相应的Socket连接。 服务器端程序运行结束后,调用ServerSocket对象的close()方法停止等待客户端请求。 由此可以看出,对于一个网络通信程序来说,需要编写服务器端和客户端两个程序才能够实现相互通信,为了实现一个服务端程序能够对多个客户进行服务,需要使用到多线程,在服务器端创建客户请求的监听线程,一旦客户发起请求连接,在服务器端创建用于服务的Socket,利用改Socket完成与客户的通信,即每个线程针对一个客户进行服务,数据传输结束后,终止运行该Socket通信的线程,继续在服务器端指定的端口进行监听。 数据报的通信的发送和接收过程: 应用程序的工作流程如下:   (1)首先要建立数据报通信的Socket,我们可以通过创建一个DatagramSocket对象实现它,在Java中DatagramSocket类有如下两种构造方法:   public DatagramSocket() 构造一个数据报socket,并使其与本地主机任一可用的端口连接。若打不开socket则抛出SocketException异常。   public DatagramSocket(int port) 构造一个数据报socket,并使其与本地主机指定的端口连接。若打不开socket或socket无法与指定的端口连接则抛出SocketException异常。   (2)创建一个数据报文包,用来实现无连接的包传送服务。每个数据报文包用DatagramPacket类创建,DatagramPacket对象封装了数据报包数据、包长度、目标地址和目标端口。客户端要发送数据报文包,要调用DatagramPacket类以如下形式的构造函数创建DatagramPacket对象,将要发送的数据和包文目的地址信息放入对象之中。DatagramPacket(byte bufferedarray[],int length,InetAddress address,int port)即构造一个包长度为length的包传送到指定主机指定端口号上的数据报文包,参数length必须小于等于bufferedarry.length。   DatagramPacket类提供了4个类获取信息:   public byte[] getData() 返回一个字节数组,包含收到或要发送的数据报中的数据。   public int getLength() 返回发送或接收到的数据的长度。   public InetAddress getAddress() 返回一个发送或接收此数据报包文的机器的IP地址。   public int getPort() 返回发送或接收数据报的远程主机的端口号。   (3)创建完DatagramSock

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档