在java中,可以创建套接字服务器和套接字客户端,是否可以运行套接字服务器的实例,以及从同一台机器上的套接字服务器接收数据的套接字/服务器客户端?
例如,套接字服务器在端口60010上运行,套接字客户端在通过套接字连接到该端口的同一台机器上运行,或者我需要通过新机器将其添加到我的网络中?如果它在TCP / IP层上运行唯一的IP地址和端口号 .
这是一个简单的可运行示例,可以帮助您入门 . 它启动两个线程,一个带有 ServerSocket ,另一个带有 Socket 连接 . 一个连续发送字符串,另一个打印它们 .
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(); } }
是的,您可以在同一台机器上拥有以下内容:
ServerSocket server = new ServerSocket(60010); Socket client = server.accept();
别的地方:
Socket socket = new Socket("localhost", 60010); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); out.println("Hello server");
是的,您可以在同一台计算机上运行客户端和服务器 . 我一直都在为发展做这件事 . 如果您遇到麻烦,一些路由器在将数据包转发回自身时遇到问题 . 尝试使用localhost而不是外部IP进行开发 .
是的,完全有可能 . 每个操作系统都有一个loopback接口 . 您可以将多个客户端连接到计算机上的一个服务器 . 这种通信通过环回接口进行 .
4 回答
这是一个简单的可运行示例,可以帮助您入门 . 它启动两个线程,一个带有
ServerSocket
,另一个带有Socket
连接 . 一个连续发送字符串,另一个打印它们 .您应该能够按原样运行此类 .
是的,您可以在同一台机器上拥有以下内容:
别的地方:
是的,您可以在同一台计算机上运行客户端和服务器 . 我一直都在为发展做这件事 . 如果您遇到麻烦,一些路由器在将数据包转发回自身时遇到问题 . 尝试使用localhost而不是外部IP进行开发 .
是的,完全有可能 . 每个操作系统都有一个loopback接口 . 您可以将多个客户端连接到计算机上的一个服务器 . 这种通信通过环回接口进行 .