- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 物流技术与设备重点.doc
- 社区营养管理和干预(韦).ppt
- 食品中水分和灰分的测定.ppt
- 社区营养管理和干预.ppt
- 物流企业国际化发.pptx
- 社团干部竞选.ppt
- 物流软件价值和详细功能说明.doc
- 社心第二章.ppt
- 食品中酸类物质的测定.ppt
- 社有资产管理与企业改革.ppt
- TGXAS-艾滋病常见病症中医外治规范.pdf
- DB44T1841-2016 有机乌龙茶生产技术规程.pdf
- DB1404T19-2021 消毒用UVCLED术语与定义.pdf
- DB62T1120-2024 绿色食品 蚕豆生产技术规程.pdf
- DB53T1300-2024 烤烟地膜覆盖与回收技术规程.pdf
- DB37T4649.2-2023 智能制造第2部分:智能工厂评价体系指南_地方标准.pdf
- TNNCP3-2020 食品安全-南漳银杏.pdf
- DB65T3650-2014 零散烈士纪念设施保护管理规范.pdf
- DJG330212T-宁波市鄞州区党政机关单位节能管理规范.pdf
- DB65T3844-2016 雪菊收购分级质量要求.pdf
文档评论(0)