本学期计算机网络课程要求完成一个TCP和一个UDP的通信程序,我完成了功能的简单实现,下面讲讲我的TCP程序的实现。(UDP的见另一篇博客)
目录
效果展示


以下是具体实现过程:
一、项目结构

下面说说每个类的具体作用:
TCPClient:TCP客户端的核心代码部分;
TCPClientFrame:TCP客户端的界面搭建;
TCPServer:TCP服务器端的核心代码部分;
TCPServerFrame:TCP服务器端的界面搭建;
TCPSend:客户端和服务器端发送信息的功能实现;
ReminderTextAdapter:网上查阅的代码,非核心内容实现部分,主要用于灰色提示字hint功能的实现(swing中的实现方法不太熟悉);
二、完整代码
1.TCPClient
代码如下:
package tcpCommunication;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.Socket;
public class TCPClient implements ActionListener, Runnable {
private TCPClientFrame clientFrame;
private Socket socket;
private Thread thread = null;
private DataInputStream inFromServer;
private DataOutputStream outToServer;
public TCPClient() {
JPanel panel = new JPanel();
clientFrame = new TCPClientFrame("TCPClient");
clientFrame.add(panel);
clientFrame.placeComponents(panel);
clientFrame.setVisible(true);
clientFrame.getConnect().addActionListener(e -> {
try {
//host:"127.0.0.1"
String host = clientFrame.getIpField().getText();
//port:6666
int port = Integer.parseInt(clientFrame.getPortField().getText());
socket = new Socket(host, port);
clientFrame.getTextArea().append("[Connect] : Connect…\n");
inFromServer = new DataInputStream(socket.getInputStream());
outToServer = new DataOutputStream(socket.getOutputStream());
//new TCPSend(socket, "客户端").sendMessage();
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
} catch (IOException ex) {
ex.printStackTrace();
}
});
clientFrame.getTransmit().addActionListener(this);
System.out.println("TCP客户端准备就绪\n");
}
public static void main(String[] args) {
new TCPClient();
}
//向服务器端发送数据
@Override
public void actionPerformed(ActionEvent e) {
String send = clientFrame.getSendField().getText();
new TCPSend(send, outToServer, clientFrame.getTextArea(),
"Client").sendMessages();
}
//使用线程处理客户端接收服务器端的数据
@Override
public void run() {
while (true) {
try {
clientFrame.getTextArea().append("[Server send] : " + inFromServer.readUTF() + "\n");
Thread.sleep(100);
} catch (IOException | InterruptedException e) {
//e.printStackTrace();
System.out.println("客户端与服务器连接中断\n");
break;
}
}
}
}
2.TCPClientFrame
代码如下:
package tcpCommunication;
import udpCommunication.ReminderTextAdapter;
import javax.swing.*;
import java.awt.*;
public class TCPClientFrame extends JFrame {
private static JTextField ipField;
private static JTextField portField;
private static JTextField sendField;
private static JTextArea textArea;
private static JButton connect;
private static

这篇博客分享了作者在计算机网络课程中完成的一个简易TCP通信程序。包括TCPClient和TCPServer的实现,详细介绍了每个类的功能,如TCPClientFrame用于客户端界面,TCPServerFrame用于服务器端界面,而TCPSend则负责信息的发送。虽然实现了基本的通信功能,但项目仍有待扩展,如增加多客户端交互等特性。

857

被折叠的 条评论
为什么被折叠?



