TCP网络程序设计是指利用Socket类编写通信程序,分为服务器程序和客户机程序,功能和编写方法不一样。java.net包中ServerSocket类用于表示服务器套接字,主要功能是等待来自网路上的“请求”,可通过制定端口来等待连接的套接字。在网络编程中如果只要求客户机向服务器发送消息,不要求服务器向客户机发送消息,称为单向通信。连接成功后,客户机通过输出流发送数据,而服务器会使用输入流接收数据。
下面是简单的单向通信的实例:
TCP服务器端程序:getServer()来建立服务器套接字,getClientMessage()方法来获取客户端信息。
import java.io.*;
import java.net.*;
public class MyTcp{
private BufferedReader reader;
private ServerSocket server;
private Socket socket;
void getserver(){
try{
server = new ServerSocket(8998);
System.out.println("服务器套接字已经创建成功");
while(true){
System.out.println("等待客户机的连接");
socket = server.accept();
reader = new BufferedReader(new InputStream(socket.getInputStream()));
getClientMessage();
}
}
}
private void getClientMessage(){
try{
while(true){
System.out.println("客户机:"+reader.readLine());
}
}catch(Exception e){
e.printStackTrace();
}
try{
if(reader!=null){
reader.close();
}
if(socket!=null){
socket.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args[]){
MyTcp tcp = new MyTcp();
tcp.getServer();
}
}
接下来是客户端程序:客户端程序将实现用户在文本框中输入信息发送至服务器端,并将文本框中输入的信息显示在客户端的文本域中。
public class MyClient {
Socket socket;
private PrintWriter writer;
private void connect(){
System.out.println("尝试连接:");
try{
socket = new Socket("127.0.0.1",8998);
writer= new PrintWriter(socket.getOutputStream(),true);
}catch(Exception e){
e.printStackTrace();
}
}
publci static void main(String args[]){
MyClient clien = new MyClient();
clien.connect();
}
}