gpt4 book ai didi

Java网络编程基础教程之Socket入门实例

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java网络编程基础教程之Socket入门实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

当我们想要在Java中使用TCP/IP通过网络连接到服务器时,就需要创建java.net.Socket对象并连接到服务器。假如希望使用Java NIO,也可以创建Java NIO中的SocketChannel对象.

创建Socket 。

下面的示例代码是连接到IP地址为78.64.84.171服务器上的80端口,这台服务器就是我们的Web服务器(www.zzvips.com),而80端口就是Web服务端口.

复制代码代码如下:

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

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

复制代码代码如下:

Socket socket = new Socket("jb51.net", 80);

  。

Socket发送数据 。

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

复制代码代码如下:

Socket socket = new Socket("jb51.net", 80); OutputStream out = socket.getOutputStream(),

  。

out.write("some data".getBytes()); out.flush(); out.close(),

socket.close(),

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

  。

Socket读取数据 。

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

复制代码代码如下:

Socket socket = new Socket("jb51.net", 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("jb51.net", 80),

  。

socket.close(),

(全文完) 。

最后此篇关于Java网络编程基础教程之Socket入门实例的文章就讲到这里了,如果你想了解更多关于Java网络编程基础教程之Socket入门实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com