是否可以在同一台计算机上运行套接字服务器和套接字客户端?
在Java中,可以创建套接字服务器和套接字客户端,是否可以运行套接字服务器的实例以及从同一台计算机上的套接字服务器接收数据的套接字/服务器客户端?
例如,套接字服务器在端口60010上运行,套接字客户端在通过套接字连接到该端口的同一台计算机上运行,还是我需要一台新计算机并将其添加到网络中?如果它在TCP
/ IP层上运行时具有唯一的IP地址和端口号。
-
这是一个简单的可运行示例,可以帮助您入门。它开始两个线程,一个以a开头,一个
ServerSocket
建立Socket
连接。一个连续发送字符串,另一个连续打印字符串。您应该可以直接按原样运行此类。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; public class SocketTest { public static void main(String[] args) throws IOException { startServer(); startSender(); } public static void startSender() { (new Thread() { @Override public void run() { try { Socket s = new Socket("localhost", 60010); BufferedWriter out = new BufferedWriter( new OutputStreamWriter(s.getOutputStream())); while (true) { out.write("Hello World!"); out.newLine(); out.flush(); Thread.sleep(200); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } public static void startServer() { (new Thread() { @Override public void run() { ServerSocket ss; try { ss = new ServerSocket(60010); Socket s = ss.accept(); BufferedReader in = new BufferedReader( new InputStreamReader(s.getInputStream())); String line = null; while ((line = in.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } }