全国
Java--教育路上

栏目导航

全国站 > Java > 网络编程
需求

Java简单的 TCP 网络程序

摘要:Java 简单 TCP 网络 程序 ,接下来通过一个 TCP 通信的案例来进一步学习。 要实现 TCP 通信需要创建一个服务器端程序和一个客户端程序,。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。

标签:
发布时间:
2024-05-08 17:13
信息来源:
网络推荐
浏览次数:
1109
Java简单的 TCP 网络程序

通过前面两个小节的讲解,了解了 ServerSocket、Socket 类的基本用法,为了让初学者
更好地掌握这两个类的使用,接下来通过一个 TCP 通信的案例来进一步学习。
要实现 TCP 通信需要创建一个服务器端程序和一个客户端程序,为了保证数据传输的安全
性,首先需要实现服务器端程序,如例 13-10 所示。
例 13-10 Example04.java
import java.io.*;
import java.net.*;
public class Example04 {
public static void main(String[] args) throws Exception {
new TCPServer().listen(); // 创建 TCPServer 对象,并调用 listen()方法
}
}
// TCP 服务端
class TCPServer {
private static final int PORT = 7788; // 定义一个端口号
public void listen() throws Exception { // 定义一个 listen()方法,抛出一个异

ServerSocket serverSocket = new ServerSocket(PORT); // 创建 ServerSocket
对象
Socket client = serverSocket.accept(); // 调用 ServerSocket 的 accept()方
法接收数据
OutputStream os = client.getOutputStream();// 获取客户端的输出流
System.out.println("开始与客户端交互数据");
os.write(("重工欢迎你!").getBytes()); // 当客户端连接到服务端时,向客
户端输出数据
Thread.sleep(5000); // 模拟执行其它功能占用的时间
System.out.println("结束与客户端交互数据");
os.close();
client.close();
}

}运行结果如图 13-16 所示。

from shengerguan

例 13-10 中,创建了一个服务器端程序,用于接收客户端发送的数据。在创建 ServerSocke
对象时指定了端口号,并调用该对象的 accept()方法。从运行结果可以看出,命令行窗口
中的光标一直在闪动,这是因为 accept()方法发生阻塞,程序暂时停止运行,直到有客
户端来访问时才会结束这种阳塞状芯。这时该方法会返回一个 Socket 类型的对象用于表示
客户端,通过该对象获取与客户端关联的输出流并向客户端发送信息,同时执行
Thread.sleep(5000)语句植拟服务器执行其他功能占用的时间。最后,调用
Socket 对象的 close()方法将通信结束。
例 13-10 完成了服务器端程序的编写,接下来编写客户端程序,如例 13-11 所示。
例 13-11 Example05.java
import java.io.*;
import java.net.*;
public class Example05 {
public static void main(String[] args) throws Exception {
new TCPClient().connect(); // 创建 TCPClient 对象,并调用
connect()方法
}
}
//TCP 客户端
class TCPClient {
private static final int PORT = 7788; // 服务端的端口号
public void connect() throws Exception {
//创建一个 Socket 并连接到给出地址和端口号的计算机
Socket client = new Socket(InetAddress.getLocalHost(), PORT);
InputStream is = client.getInputStream(); // 得到接收数据的流
byte[] buf = new byte[1024]; // 定义 1024 个字节数组的缓
冲区
int len = is.read(buf); // 将数据读到缓冲区中
System.out.println(new String(buf, 0, len)); // 将缓冲区中的数据输出
client.close(); // 关闭 Socket 对象,
释放资源
}
}
运行结果如图 13-17 所示。



from shengerguan


例 13-11 中,创建了一个客户端程序,用于向服务器端发送数据。在客户端创建 Socket 对象与服务器端建立连接后,通过 Socket 对象获得输人流读取服务端发来的数,并打印结 果,如图 13-17 所示。同时例 13-10 中的服务端程序结束了阻塞状态,如图 13-18 所示, 会打印出“开始与客户端交互数据”,然后向客户端发出数据“传智播客欢迎你”,在休眠 5 秒钟后会打印出“结束与客户端交互数据”,本次通信结束。

from shengerguan


上一篇:
Java Socket
下一篇:
Java多线程的 TCP 网络程序
相关推荐
最近更新
学校免费发布信息关闭
如有图片请发邮件到:edu63@foxmail.com,审核后显示

 换一张

确认提交
完善补充本文信息关闭
非常感谢您帮助完善补充本文信息


 换一张

确认提交