快速业务通道

Java网络编程从入门到精通(18):Socket类的getter和setter方法(2) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
args) throws Exception      {          ServerSocket serverSocket = new ServerSocket(1234);          System.out.println("服务器已经启动,端口号:1234");          while (true)          {              Socket socket = serverSocket.accept();              socket.setOOBInline(true);              InputStream in = socket.getInputStream();              InputStreamReader inReader = new InputStreamReader(in);              BufferedReader bReader = new BufferedReader(inReader);              System.out.println(bReader.readLine());              System.out.println(bReader.readLine());              socket.close();          }      } } public class Client {      public static void main(String[] args) throws Exception      {          Socket socket = new Socket("127.0.0.1", 1234);          socket.setOOBInline(true);          OutputStream out = socket.getOutputStream();          OutputStreamWriter outWriter = new OutputStreamWriter(out);          outWriter.write(67); // 向服务器发送字符"C"          outWriter.write("hello world\r\n");          socket.sendUrgentData(65); // 向服务器发送字符"A"          socket.sendUrgentData(322); // 向服务器发送字符"B"          outWriter.flush();          socket.sendUrgentData(214); // 向服务器发送汉字”中”          socket.sendUrgentData(208);          socket.sendUrgentData(185); // 向服务器发送汉字”国”          socket.sendUrgentData(250);          socket.close();      } }

Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)(4)

时间:2011-01-12

由于运行上面的代码需要一个服务器类,因此,在加了一个类名为Server的服务器类,关于服务端套接字的使用方法将会在后面的文章中详细讨论。在类Server类中只使用了ServerSocket类的accept方法接收客户端的请求。并从客户端传来的数据中读取两行字符串,并显示在控制台上。

测试

由于本例使用了127.0.0.1,因Server和Client类必须在同一台机器上运行。

运行Server

java mynet.Server

运行Client

java mynet.Client

在服务端控制台的输出结果

服务器已经启动,端口号:1234

ABChello world

中国

在ClienT类中使用了sendUrgentData方法向服务器发送了字符''A''(65)和''B''(66)。但发送''B''时实际发送的是322,由于sendUrgentData只发送整型数的低字节。因此,实际发送的是66。十进制整型322的二进制形式如图1所示。

图1  十进制整型322的二进制形式

从图1可以看出,虽然322分布在了两个字节上,但它的低字节仍然是66。

在Client类中使用flush将缓冲区中的数据发送到服务器。我们可以从输出结果发现一个问题,在Client类中先后向服务器发送了''C''、"hello world"r"n"、''A''、''B''。而在服务端程序的控制台上显示的却是ABChello world。这种现象说明使用sendUrgentData方法发送数据后,系统会立即将这些数据发送出去;而使用write发送数据,必须要使

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号