如何为可扩展系统进行socket编程-java开发java经验技巧

如何为可扩展系统进行socket编程-java开发java经验技巧

ID:30805531

大小:171.76 KB

页数:15页

时间:2019-01-03

如何为可扩展系统进行socket编程-java开发java经验技巧_第1页
如何为可扩展系统进行socket编程-java开发java经验技巧_第2页
如何为可扩展系统进行socket编程-java开发java经验技巧_第3页
如何为可扩展系统进行socket编程-java开发java经验技巧_第4页
如何为可扩展系统进行socket编程-java开发java经验技巧_第5页
资源描述:

《如何为可扩展系统进行socket编程-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、如何为可扩展系统进行Socket编程・编程开发技术如何为可扩展系统进行Socket编程木文由ImportNew・乔永琪翻译自javaworldo欢迎加入翻译小组。转载请见文末要求。从简单I/O到异步非阻塞channel的JavaSocket模型演变之旅上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写UnixUnixBerkleySocket和WindowsWinSock代码。我的任务是确保视频游戏客户端和一个游戏服务器通信。很幸运有这样的机会写一些JavaSocket代码,我对Java流式网络编程和简洁明了的API着迷。这一点都不让人惊讶,

2、Java最初就是设计促进智能设备Z间的通信,这一点很好的转移到了桌面应用和服务器应用。1996年,JavaWorld刊登了QusayH.Mahmoud的文章《SocketsprogramminginJava:Atutorial》。文章概述了Java的Socket编程模型。从那以后的18年,这个模型少冇变化。这篇文章依然是网络系统Javasocket编程的入门经典。我将在此基础Z上,首先列出一个简单的客户端/服务器例了,开启JavaI/O谦卑之旅。此例展示来自java,io包和N10Javal.4引起的新的非阻塞1/0API的特性,最后一个例子会涉及Java7引入的NI

3、02某些特性。Java的Socket编程:TCP和UDPSocket编程拆分为两个系统Z间的相互通信,网络通信有两种方式:ransportControlProtocol(TCP)和UserDatagramProtocol(UDP)。TCP和UDP用途不一,并且有各口独特的约束:•?TCPI办议相对简单稳定,可以帮助客户端与一台服务器建立连接,这样两个系统就可以通信。在TCP协议屮,每个实体都能保证其通信载荷(communicationpayload)会被接受。•?UDP是一种非连接协议,适用于那些无需保证每个包都能抵达终点的场景,比如流媒体。如何区分这两者的差异?试想

4、,倘若你在自己喜欢的网站上观看流媒体视频,这时掉帧会发生什么。你是倾向于客户端放缓视频接收丢失的帧,还是继续观看视频呢?典型的流媒体协议采用UDP协议,因为TCP协议保障传输,HTTP、FTP、SMTIPOP3等协议会选择TCP。以往的Socket编程早在NIO以而,JavaTCP客户端socket代码主耍

5、±

6、java.net.Socket类來实现。下而的代码开启了一个对服务器的连接:Socketsocket二newSocket(server,port);一旦Socket实例与服务器相连,我们就可以获得服务器端的输入输出流。输入流用來读取服务器端的数据,输出流用来

7、将数据写回到服务器端。可以执行以下的方法获取输入输出流:InputStreamin二socket・getlnputStream();Outputstreamout=socket.getOutputStreamO;这是基木的流一一用来读取或者写入一个文件的流是相同的,所以我们能够将其转换成最好的形式服务于用例中。比如,我们叮以用一个PrintStream包装OutputStrcam,这样我们就能轻易地用printlnO等方法对文本进行写的操作。再比如,我们用BufferedReader包装InputStream,再通过InputStreamReader可以很容易的用re

8、adLineO等方法对文木进行读操作。JavaI/O示例第一部分:HTTP客户端通过一个简短的例了來看如何执行HTTPGET获取一个HTTP服务。HTTP比本例更加复杂成熟,在我们只写一个客户端代码去处理简单案例。发岀一个请求,从服务器端获取一个资源,同时服务器端返冋响应,并关闭流。本案例所需的步骤如下:1.创建端口为80的网络服务器所对•应的客户端Socket-2.从服务器端获取一个PrintStream,同时发送一个GETPATHHTTP/1.0请求,其屮PATH就是服务器上的请求资源。比如,假设你想打开一个网站根目录,那么path就是/03.获取服务器端的Inp

9、utStream,用一个BufferedReader将其包装,然后按行读取响应。列表1、SimpleSocketClientExample・javapackagecom・gcckcap・javaworld・simplcsocketclient;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.net.Socket;publicclassSimpleSocketClientExamplepublicstati

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。