话不多说直接上代码,运行的时候先启动服务端,在启动客户端
客户端:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.channels.WritableByteChannel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
public class Tcp_Cliect{
public static void main(String[] args) {
try {
//创建一个客户端socket
Socket socket = new Socket("localhost",8888);
//向服务器端传递信息
OutputStream ots = socket.getOutputStream();
PrintWriter pw = new PrintWriter(ots);
pw.write("111222123");
pw.flush();
//关闭输出流
socket.shutdownOutput();
//获取服务器端传递的数据
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
BufferedReader br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null){
System.out.println("我是客户端,服务器说:"+info);
}
//关闭资源
br.close();
isr.close();
is.close();
pw.close();
ots.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务端:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Tcp_service{
private BufferedReader reader;
private ServerSocket serverSocket;
private Socket socket;
/**
* 创建服务端的程序,读取客户端传来的数据
*/
void getserver(){
try {
serverSocket = new ServerSocket(8888); //实例化服务端socket
System.out.println("服务器套接字已经创建成功");
while (true) {
System.out.println("等待客户机的连接:");
socket = serverSocket.accept(); //实例化socket对象
reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); //实例化BufferReader对象
getClientMessage();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void getClientMessage() {
try {
String message = null;
while ((message = reader.readLine())!=null) {
System.out.println("客户机传来的信息是:"+message);
OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream(),"UTF-8");
// PrintWriter out = new PrintWriter(osw,);
PrintWriter pw = new PrintWriter(osw,true);
pw.println("服务端已接收");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Tcp_service myTcp = new Tcp_service(); //创建本类对象
myTcp.getserver();
}
}


本文展示了如何使用Java实现TCP协议的客户端和服务器端通信。客户端发送'111222123'到服务器,服务器接收到后回应'服务端已接收'。代码详细展示了Socket、OutputStream、InputStream及其相关类的使用。
885

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



