有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用ServerSocket引发java ConnectException

以下代码在编译时是正确的,但在运行时显示:ConnectException 错误图像:

error image

import java.net.*;
import java.io.*;

class TcpChat 
 {
public static void main(String[] args) throws Exception
 {
Socket s = new Socket("Ip",20000);
ServerSocket ss = new ServerSocket(20000);

new Thread(new TcpClient(s)).start();
new Thread(new TcpServer(ss)).start();
 }
 }

class TcpClient implements Runnable
 {
Socket s;
TcpClient(Socket s)
 {
this.s = s;
 }

public void run()
 {
try
 {
OutputStream out = s.getOutputStream();
out.write("hello javaserver".getBytes());
s.close();
 }
catch (Exception e)
{
 }
 }
 }

class TcpServer implements Runnable
{
ServerSocket ss;
TcpServer(ServerSocket ss)
 {
this.ss = ss;
 }

public void run()
 {
try
{
Socket s = ss.accept();
InputStream in = s.getInputStream();
byte[] buf =new byte[1024];
int length =in.read(buf);
String ip =s.getInetAddress().getHostAddress();
String data = new String(buf,0,length);

System.out.println(ip+":::"+data);

s.close();
ss.close();


 }
catch (Exception e)
{
}
}



}

此外,我使用的IP地址没有错误,在我的电脑中我使用自己的IP地址


共 (2) 个答案

  1. # 1 楼答案

    您没有发布完整的代码,因此很难检查,但您似乎在实际打开服务器套接字之前尝试连接到端口(即打开客户端套接字)。当然,这是行不通的,因为在那个端口上还没有任何监听(因此:连接被拒绝)

  2. # 2 楼答案

    改变你的主要方法

        ServerSocket ss = new ServerSocket(20000);
        Socket s = new Socket("127.0.0.1", 20000);
        new Thread(new TcpServer(ss)).start();
        new Thread(new TcpClient(s)).start();
    

    您可以为Chat Serverhere找到一个更好的例子。你也可以从here上读到sockets