今天给各位分享javasocketping的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、java socket 问题2、用java的socket链接自己的电脑和阿里云服务器,出现连接超时错误,怎么办3、用java的Socket编写的小小小聊天工具,在本机调试成功,但是在两台能互相ping通的电脑却不能连接上4、用JAVA Socket可以实现同一路由器下的两台电脑进行通信。那么如果不是同一路由器的电脑可以通信吗?5、Java socket编程:客户端向服务器端发送消息服务器端接受不到是怎么回事?客户端和服务器端在同一台机子6、急!急!急!用java socket连接一个服务器和客户端实现通讯,登陆失败
java socket 问题
TCP 协议明确规定 192.168.* 是无法跨越互联网路由器的,这个是 C 类地址中的,另外还有 B 类地址 172.16 及 A 类地址中的列表也有类似规定,路由器默认设置都是把数据包隔离在局域网内,不会转发到外面去。
即使双方机器 IP 不相同但都在 192.168.* 范围内依然无法跨越互联网路由器。
所以你想在跨路由器上处理需要进行 NAT 转换,在两方路由器上都为某个 IP 进行 NAT 映射,比如: 把 01001 映射为 192.168.0.1 的聊天端口,把 01002 映射为 192.168.0.2; 10103 映射到 192.168.10.103 的聊天端口上,依此类推。给 A 网 10.103 发送消息就连接到 202.207.208.209:10103 端口。
用java的socket链接自己的电脑和阿里云服务器,出现连接超时错误,怎么办
说下 debug的思路 你把 服务端和客户端的代码 都在本地跑一把,用不同的端口,测试是不是代码的问题, 然后把这些代码全部部署到阿里云服务器上面去,看看在阿里云服务器上是否有问题,
然后你把你服务端的代码 部署到 阿里云上面去,首先你需要知道阿里云的外网IP, 首先你在ping 阿里云的外网IP ,能不能ping 通,查看你本地是否可以连接到 阿里云。这里面你需要注意的是 阿里云服务器本身的设置,是否开启的防火墙,是否允许对应的端口,这里有一堆网络设置的问题,能想到的就这些。 如果能ping通的话,很大可能是 阿里云服务器的网络配置问题,防火墙,端口,访问策略,允许访问的IP,不是运维,想到的就这么多
用java的Socket编写的小小小聊天工具,在本机调试成功,但是在两台能互相ping通的电脑却不能连接上
建议先用一个最简单的程序测试客户端链接服务器,这样可以排除很多干扰,下面两个类已经是客户端和服务器的最简代码了,你先测一下,如果仍不能连接,把异常信息发上来看看。
另:Socket连接容易出问题的地方:
1)端口号冲突,服务器无法启动;
2)IP地址错误,IP地址分本机地址、局域网地址和广域网地址,在不同的环境下使用不同的地址测试,如果错误将无法被客户端访问,还有如果机器安装了多网卡等问题都会引起错误;
3)防火墙禁止Java程序开放端口,不单是服务器机器的软防火墙,局域网的防火墙也可能阻止外部的访问。
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerMain {
public ServerMain() {
try {
ServerSocket ss = new ServerSocket(31647);
Socket s = ss.accept();
System.out.printf(“客户端连接成功:\n%s\n”, s.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ServerMain();
}
}
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientMain {
public ClientMain() {
try {
Socket s = new Socket(“192.168.1.100”, 31647); // 修改IP地址
System.out.println(“连接服务器成功!”);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ClientMain();
}
}
用JAVA Socket可以实现同一路由器下的两台电脑进行通信。那么如果不是同一路由器的电脑可以通信吗?
可以 但是会困难很多 就像qq这样的软件
首先就是把ttl设的大一些 这样保证过路由的时候不会把你的包扔了
其次就是一个NAT的问题,如果是你和固定ip的服务器连接还好,就怕是两个客户端点点互联,对等体的连接是有些困难的,因为所有的pc几乎都在NAT后面
比如你是192.168.0.1 而我是192.168.0.2 可是杂俩根本就不在一个网段,
这两个地址都是只是NAT后面的保留地址
过NAT的时候,可能你实际是123.1.1.1 而我是203.1.1.1 这次是这样 下次还会变 DHCP么
两个进程要想通信,就得知道彼此的真实socket
两个程序怎么知道彼此的ip呢?
这就需要一个固定ip的第三点(中心点服务器)
你和我上来都进行对固定ip的第三点连接 第三点就会拿到你和我的NAT前面的真实地址
然后第三方 把我的真实地址告诉你 把你的告诉我
这样咱们就可进行点对点了
这就像我不知道你的电话,你也不知道我的电话,咱们怎么联系
只能通过路人甲,这个路人甲的电话是固定且已知的,咱们都先给路人甲打电话,然后他手机就能显示你的和我的号码了,他再把彼此的号码发给对方,双方就知道对方的号码了,就可以互相打电话了
比如TCP与UDP的打洞和穿洞 就是这种NAT穿越技术 这是P2P的基础 也是真实网络环境下点点互联的一个比较普遍的方案
Java socket编程:客户端向服务器端发送消息服务器端接受不到是怎么回事?客户端和服务器端在同一台机子
我大致看了下代码,没有什么问题,你需要注意其他的地方:
服务器地址是否填写正确,有没有弄错,请在发送Socket请求之前Ping一下试试,如果通则代码可以正常访问,若不通,则地址一定有问题。
检查端口号是否有问题,服务器端口号有没有填写错误。
槛车服务器网络防火墙是否开启,默认开启状态下,你怎么的也是请求不进去的。
服务器服务是否正常开启,他不开启你怎么的也请求不进去。
急!急!急!用java socket连接一个服务器和客户端实现通讯,登陆失败
好抽象的问题。。
没有抛出异常?!你至少把异常啥的贴出来吧。。
试着两台自己之间互相ping一下,如果连ping都不行,那试着把杀毒啥的都关了。再ping。如果还是不行,那没准是你物理连接有问题。如果试了直接ping是可以的,那么,应该就是你连socket都不熟悉,自己没把代码写好。。这个问题不知道异常是啥或者没有代码俺是没办法解决了。。
下面的代码可以试一下测试看看两台机子是不是可以建立连接。两边都试一下,看看行不行,如果不行,那么可能是你的jre有问题吧,又或者某XX类似防火墙的程序把你联网程序都封了~~
import java.net.*;
public class WriteServer {
public static int serverPort = 998;
public static int clientPort = 999;
public static int buffer_size = 1024;
public static DatagramSocket ds;
public static byte buffer[] = new byte[buffer_size];
public static void TheServer() throws Exception {
int pos=0;
while (true) {
int c = System.in.read();
switch (c) {
case -1:
System.out.println(“Server Quits.”);
return;
case ‘\r’:
break;
case ‘\n’:
ds.send(new DatagramPacket(buffer,pos,
InetAddress.getLocalHost(),clientPort));
pos=0;
break;
default:
buffer[pos++] = (byte) c;
}
}
}
public static void TheClient() throws Exception {
while(true) {
DatagramPacket p = new DatagramPacket(buffer, buffer.length);
ds.receive(p);
System.out.println(new String(p.getData(), 0, p.getLength()));
}
}
public static void main(String args[]) throws Exception {
if(args.length == 1) {
ds = new DatagramSocket(serverPort);
TheServer();
} else {
ds = new DatagramSocket(clientPort);
TheClient();
}
}
}
javasocketping的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javasocketping的信息别忘了在本站进行查找喔。