0

次のコードは、コンパイル時には正しいですが、実行すると次のように表示されます。ConnectExceptionエラーイメージ:

エラー画像

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アドレスにエラーはありません。PCでは自分のIPを使用しています。

4

2 に答える 2

2

コード全体を投稿していないため、確認するのは困難ですが、実際にサーバー ソケットを開く前に、ポートに接続しようとする (クライアント ソケットを開く) ようです。もちろん、そのポートでリッスンしているものはまだないため、これは機能しません (つまり、接続が拒否されました)。

于 2012-09-03T07:06:13.493 に答える
1

メインメソッドを次のように変更します

    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 Server hereのより良い例を見つけることができます。また、ここsocketsから読むことができます

于 2012-09-03T07:23:40.957 に答える