Java Socket编程实例:助力Java零基础自学

简述
在Java编程里,若你打算借助TCP/IP协议通过网络连接服务器,就需要创建一个 java.net.Socket 对象来建立与服务器的连接。要是你使用Java NIO,也能在Java NIO中创建 SocketChannel 对象实现这一目的。
第一步:创建Socket
以下示例代码展示了如何连接到IP地址为 89.53.64.191 、端口号为80的服务器。这里的服务器是一个Web服务器,端口号80是常见的HTTP服务端口。

Socket socket = new Socket(“89.53.64.191”, 80);

当然,我们也可以使用域名来替代IP地址,示例如下:

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

第二步:Socket数据传输
若要通过TCP协议传输数据,我们需要获取TCP连接的输出流。示例代码如下:

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数据包的大小相匹配。调用 flush() 方法能确保数据及时发送到服务器。
第三步:Socket数据获取
要从TCP连接中获取数据,我们需要获取TCP连接的输入流。代码如下:

Socket socket = new Socket(“jenkov.com”, 80);
InputStream in = socket.getInputStream();
int data = in.read();
//… 读取更多数据…
in.close();
socket.close();

代码本身并不复杂,但需要特别注意的是,从 Socket 的输入流中读取数据时,无法直接判断文件是否结束。 read() 方法会持续被调用,直到返回 -1。对于 Socket 而言,只有当服务器关闭连接时, Socket 的输入流才会返回 -1,但实际上服务器通常不会随意关闭连接。如果我们想通过一个连接发送多个请求,在这种情况下关闭连接显然是不明智的。

因此,在从 Socket 的输入流中读取数据时,我们必须明确要读取的字节数。这可以通过让服务器告知已发送的数据字节数,或者在数据末尾设置特殊的字符标识来实现。
第四步:关闭Socket
在使用完TCP连接后,我们必须关闭 Socket 并断开与服务器的连接。只需调用 Socket.close() 方法即可,代码如下:

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

总结
实际上,Socket编程就是这么回事。只要你正确处理好输入流和输出流,一般不会遇到太大问题。如果你有学习编程的打算,可以私聊回复“learn”,就能获取一线公司的Java面试问题汇总、阿里泰山指南、所有题目的学习与思考指南,还有一份300页PDF文件的Java核心知识点总结!

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!270968671@qq.com
2. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站不保证所提供下载的资源的准确性、安全性和完整性,源码仅供下载学习之用!
8. 如用于商业或者非法用途,与本站无关,一切后果请用户自负!

启辰源码 - 一站式源码与模板下载平台 » Java Socket编程实例:助力Java零基础自学

提供最优质的资源集合

立即查看 了解详情