我能想到的最浪漫的Java网络教程之Socket,三步到位

我能想到的最浪漫的Java网络教程之Socket,三步到位简说如果要使用 Java 中的 TCP IP 通过网络连接到服务器 则需要创建一个 java net Socket 对象以连接到服务器 如果使用 JavaNIO 则还可以在 JavaNIO 中创建 SocketChanne 对象 第一步创建 Socket 以下示例

大家好,欢迎来到IT知识分享网。

简说

如果要使用Java中的TCP/IP通过网络连接到服务器,则需要创建一个java.net.Socket对象以连接到服务器。如果使用JavaNIO,则还可以在JavaNIO中创建SocketChannel对象。

第一步创建Socket

以下示例代码连接到IP地址为89.53.64.191的服务器上的端口80。该服务器是Web服务器,端口80是Web服务端口。

Socket socket = new Socket("89.53.64.191", 80); 

我们也可以像如下示例中使用域名代替IP地址:

Socket socket = new Socket("wyzhang.com", 80); 

第二步Socket发送数据

通过Socket发送数据,获取Socket的输出流(OutputStream),示例代码如下:

Socket socket = new Socket("jenkov.com", 80); OutputStream out = socket.getOutputStream(); out.write("some data".getBytes()); out.flush(); out.close(); socket.close(); 

代码非常简单,但是想要通过网络将数据发送到服务器端,一定不要忘记调用flush()方法。操作系统底层的TCP/IP实现会先将数据放入一个更大的数据缓存块中,而缓存块的大小是与TCP/IP的数据包大小相适应的。

第三步Socket读取数据

从Socket中读取数据,我们就需要获取Socket的输入流(InputStream),代码如下:

Socket socket = new Socket("jenkov.com", 80); InputStream in = socket.getInputStream(); int data = in.read(); //... read more data... in.close(); socket.close(); 

代码也并不复杂,但需要注意的是,从Socket的输入流中读取数据并不能读取文件那样,一直调用read()方法直到返回-1为止,因为对Socket而言,只有当服务端关闭连接时,Socket的输入流才会返回-1,而是事实上服务器并不会不停地关闭连接。假设我们想要通过一个连接发送多个请求,那么在这种情况下关闭连接就显得非常愚蠢。

因此,从Socket的输入流中读取数据时我们必须要知道需要读取的字节数,这可以通过让服务器在数据中告知发送了多少字节来实现,也可以采用在数据末尾设置特殊字符标记的方式连实现。

最后关闭Socket

当使用完Socket后我们必须将Socket关闭,断开与服务器之间的连接。关闭Socket只需要调用Socket.close()方法即可,代码如下:

Socket socket = new Socket("jenkov.com", 80); socket.close(); 

结语

socket其实也就那么回事,写好输入流输出流,就没有什么问题了,如果有想学习编程的同学可以私信回复 ”学习“ 领取一线大厂Java面试题总结+阿里巴巴泰山手册+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!

祝同学们学习进步 !

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/152535.html

(0)
上一篇 2025-03-08 18:33
下一篇 2025-03-08 18:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信