我想在 java 上创建一个客户端/服务器应用程序,服务器的 IP 地址为 192.168.1.100,等待端口 4500 上的客户端请求。
客户端从键盘读取字符串,向服务器发送连接请求。建立连接后,它将字符串发送到服务器。
这是我尝试过的代码:
对于服务器:
import java.net.*;
import java.io.*;
public class Serveur {
public Serveur() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
ServerSocket ecoute;
ecoute = new ServerSocket(1111);
Socket service = null;
System.out.println("Serveur en attente d'un client !");
while(true)
{
service = ecoute.accept();
System.out.println("Client connécté !");
DataInputStream is = new DataInputStream(service.getInputStream());
System.out.println("Client dit : " + is.readUTF().toUpperCase());
service.close();
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
对于客户:
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class Client {
public Client() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Connexion en cours ...");
try {
Socket s = new Socket("localhost", 1111);
DataOutputStream os = new DataOutputStream(s.getOutputStream());
Scanner sn = new Scanner(System.in);
os.writeUTF(sn.nextLine());
} catch ( IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Connécté au serveur !");
}
}
但我对这段代码有疑问:
java.net.ConnectException:连接超时:在 java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 在 java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 在 java.net.DualStackPlainSocketImpl.connect0(Native Method) 处连接。 net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net。 Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.(Unknown Source) at java.net.Socket.(Unknown Source) at Client.main(Client.java: 18)