Socket Connection Timed Out 的问题

ndscsr ndscsr 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
想写一个简单的聊天程序,于是写了一个服务器程序,和两个客户端程序,两个客户端程序代码差不多,就是相互的连接端口号不同,客户端程序打开时先向服务器端通报自己的IP地址,之后两个客户端聊天时,先向服务器取得对方的IP地址,之后再向对方发送数据,我的客户端程序中,都开了个线程,在这个线程中也写ServerSocket的代码,用来接收消息,但是测试时,在两台电脑上,分别运行两个客户端程序,只有一方能发送成功,另一方发送时总是失败,提示java.net.ConnectException: Connection timed out: connect,把Socket关闭了也没用啊,求解,以下是代码,Test作获取客户端的IP地址的服务器,Client和Client1分别是客户端。客户端程序运行到点击发送按钮的事件处理的代码时,提示异常的那个就无法运行新建Socket的代码

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

public class Test
{
public static void main(String argv[])
{
int port=7;
String userip[]=new String[2];

try
{
ServerSocket srv=new ServerSocket(port);
System.err.println("Echo server start at port:"+port);

while(true)
{
Socket clnt=srv.accept();
DataInputStream dataIn=new DataInputStream(new BufferedInputStream(clnt.getInputStream()));
DataOutputStream dataOut=new DataOutputStream(new BufferedOutputStream(clnt.getOutputStream()));

String cc=String.valueOf(clnt.getInetAddress());

String ip=cc.substring(1,cc.length());

String req=dataIn.readUTF();
System.out.println(req);

if(req.equals("Client"))
{
userip[0]=ip;
System.out.println("Client初始化成功!");
}
else if(req.equals("Client1"))
{
userip[1]=ip;
System.out.println("Client1初始化成功!");
}
else if(req.equals("needClient1"))
{
dataOut.writeUTF(userip[1]);
dataOut.flush();
System.out.println(userip[1]);
}
else if(req.equals("needClient"))
{
dataOut.writeUTF(userip[0]);
dataOut.flush();
System.out.println(userip[0]);
}

dataIn.close();
dataOut.close();
}
}
catch(IOException ioe)
{
System.err.println(ioe);
}
}
}





import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class Client implements Runnable
{
private Socket sock;
private DataInputStream dataIn;
private DataOutputStream dataOut;

Label la,la1;
TextField tf,tf1;
Button bu;
String ip;

public static void main(String argv[])
{
new Client();
}

public Client()
{
Frame f=new Frame("Client");
la=new Label("请输入要发送的字符串:");
tf=new TextField();
la1=new Label("接收到的信息");
tf1=new TextField();
tf1.setEditable(false);
Panel pa=new Panel(new GridLayout(2,2));
pa.add(la);
pa.add(tf);
pa.add(la1);
pa.add(tf1);

makeConnection();
try
{
dataOut.writeUTF("Client");
dataOut.flush();
}
catch(IOException io)
{
System.err.println("Error"+io);
}

bu=new Button("发送");
bu.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
makeConnection();

try
{
dataOut.writeUTF("needClient1");
dataOut.flush();
ip=dataIn.readUTF();
System.out.println("1");
InetAddress srvAddr=InetAddress.getByName(ip);
System.out.println("2");
Socket so=new Socket(srvAddr,1);
System.out.println("3");
dataOut=new DataOutputStream(new BufferedOutputStream(so.getOutputStream()));
send();
so.close();
}
catch(IOException io)
{
System.err.println("Error"+io);
}
}
});

f.add(pa,BorderLayout.NORTH);
f.add(bu,BorderLayout.CENTER);

f.pack();
f.setVisible(true);

Thread th=new Thread(this);
th.start();
}

private void makeConnection()
{
try
{
InetAddress srvAddr=InetAddress.getByName("221.205.48.54");

sock=new Socket(srvAddr,7);
dataOut=new DataOutputStream(new BufferedOutputStream(sock.getOutputStream()));
dataIn=new DataInputStream(new BufferedInputStream(sock.getInputStream()));
System.out.println("Connection to server ok");
}
catch(IOException io)
{
System.err.println("Error:"+io);
}
}

private void send()
{
try
{
dataOut.writeUTF(tf.getText());
dataOut.flush();
}
catch(IOException IOE)
{
System.out.println(IOE);
}
}

public void run()
{
int port=3800;

try
{
ServerSocket srv=new ServerSocket(port);
System.err.println("Echo server start at port:"+port);

while(true)
{
Socket clnt=srv.accept();
DataInputStream dataIn=new DataInputStream(new BufferedInputStream(clnt.getInputStream()));

System.out.println("Clinet connected from:"+clnt.getInetAddress());
String req=dataIn.readUTF();

tf1.setText(req);
dataIn.close();
clnt.close();
}
}
catch(IOException ioe)
{
System.err.println(ioe);
}
}
}






import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class Client1 implements Runnable
{
private Socket sock;
private DataInputStream dataIn;
private DataOutputStream dataOut;

Label la,la1;
TextField tf,tf1;
Button bu;
String ip;

public static void main(String argv[])
{
new Client1();
}

public Client1()
{
Frame f=new Frame("Client1");
la=new Label("请输入要发送的字符串:");
tf=new TextField();
la1=new Label("接收到的信息");
tf1=new TextField();
tf1.setEditable(false);
Panel pa=new Panel(new GridLayout(2,2));
pa.add(la);
pa.add(tf);
pa.add(la1);
pa.add(tf1);

makeConnection();
try
{
dataOut.writeUTF("Client1");
dataOut.flush();
}
catch(IOException io)
{
System.err.println("Error"+io);
}

bu=new Button("发送");
bu.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
makeConnection();
try
{
dataOut.writeUTF("needClient");
dataOut.flush();
ip=dataIn.readUTF();
System.out.println("4");
InetAddress srvAddr=InetAddress.getByName(ip);
System.out.println("5");
Socket so=new Socket(srvAddr,3800);
System.out.println("6");
dataOut=new DataOutputStream(new BufferedOutputStream(so.getOutputStream()));
send();
so.close();
}
catch(IOException io)
{
System.err.println("Error"+io);
}
}
});

f.add(pa,BorderLayout.NORTH);
f.add(bu,BorderLayout.CENTER);

f.pack();
f.setVisible(true);

Thread th=new Thread(this);
th.start();
}

private void makeConnection()
{
try
{
InetAddress srvAddr=InetAddress.getByName("221.205.48.54");

sock=new Socket(srvAddr,7);
dataOut=new DataOutputStream(new BufferedOutputStream(sock.getOutputStream()));
dataIn=new DataInputStream(new BufferedInputStream(sock.getInputStream()));
System.out.println("Connection to server ok");
}
catch(IOException io)
{
System.err.println("Error:"+io);
}
}

private void send()
{
try
{
dataOut.writeUTF(tf.getText());
dataOut.flush();
}
catch(IOException IOE)
{
System.out.println(IOE);
}
}

public void run()
{
int port=1;

try
{
ServerSocket srv=new ServerSocket(port);
System.err.println("Echo server start at port:"+port);

while(true)
{
Socket clnt=srv.accept();
DataInputStream dataIn=new DataInputStream(new BufferedInputStream(clnt.getInputStream()));

System.out.println("Clinet connected from:"+clnt.getInetAddress());
String req=dataIn.readUTF();

tf1.setText(req);
dataIn.close();
clnt.close();
}
}
catch(IOException ioe)
{
System.err.println(ioe);
}
}
}
...全文

相关推荐

socket错误代码对应表

Socket错误代码对应表 提示: 在命令提示符下输入:net helpmsg 1xxxx 就能够得到Windows系统提供的错误提示的详细解释。 出现网络联机错误Socket error #11001 表示您的计算机无法连上服务器,请检查您的Proxy设定以及Proxy相关账号,或暂时取消您防毒软件的「个人防火墙」。 · 出现网络联机错误Socket error #11004 应该是网络联机状态问题,请用户检查网络联机是否正常。 · 出现网络联机错误Socket error #10060 Connection Timed Out 表示您与服务器发生联机逾时错误,请检查您的Proxy相关设定,以及Proxy Server是否已将SSL 443 port打开。

天锐绿盾加密软件

浅析PHP Socket技术

phpsocketSocket位于TCP/IP协议的传输控制协议,提供客户-服务器模式的异步通信,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的反馈或服务!我练习了一个最基本的例子: 使用并发起一个阻塞式(block)连接,即服务器如果不返回数据流,则一直保持连接状态,一旦有数据流传入,取得内容后就立即断开连接。代码如下:复制代码 代码如下:<?php$host = www.sohu.com; //这个地址随便,用新浪的也行,主要是测试用,哪个无所谓$page = “/index.html”;$port = 80;$request = “GET $page HTTP/1.1\r\n

weixin_38640443

socket常见错误代码解析.pdf

socket常见错误代码解析.pdf

Liuningdianpu

QTcpSocket使用.doc

QTcpSocket使用过程中的一些问题记录

dilihua

linux上TCP connection timeout问题解决办法

主要介绍了 linux上TCP connection timeout问题解决办法的相关资料,需要的朋友可以参考下

weixin_38537941
评论 4
收藏 已收藏
分享
返回顶部
ndscsr
Java SE 62,621 成员 307,251 内容