怎样写socket可以连接互联网上的两台电脑 本帖最后由 adventurous 于 2011-10-29 20:47:12 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以写啊,把localhost换成对方的IP地址 构造socket的时候,把localhost换成对方的主机名或者是ip地址 不管局域网还是什么网道理是一样的吧?socket 因该本质上应该包括 对方的ip 和 port 和 你自己的ip 和port 。传东西就像 邮寄东西一样,要知道对方的地址和门牌号啊,ip 和 port 就起着这样的作用吧~public Socket(String host, int port)你把socket绑定到 对方的ip port就可以了~ 你不是C/S 架构的吗?装到其他电脑的是做Client 客户端的,你肯定有个服务端Server啊! 客户端绑定你的服务端的ip port ,也就是只需知道你那台 服务器server端机子的ip 就可以了啊!Server端监听就可以了~ 但是我还要给Client端传消息,就必须知道他的ip和地址,如果Client给我传消息,我要回复怎么办? 一端:serverSocket = new ServerSocket(port); Socket clientSocket = serverSocket.accept(); sockets.add(clientSocket); 另一端:socket = new Socket("ip", port); 你想一下客户端既然给你发来信息了,那么必定带着它的ipsocket=server.accept(); System.out.println("客户端信息:"+socket.getRemoteSocketAddress()); 问题是客户端第一次发请求的时候要知道我的IP地址,但我用的是路由器,IP好像是动态变化的,怎么办? 申请一个动态域名,比如花生壳什么的,让他连那个域名就可以了,DNS会动态解析这个域名的,一般都是这么搞 public byte[] Socket(){string ip="192.168.0.1"; //设置服务器IPint listenPort = 6666; //设置监听的端口//创建Tcp监听器TcpListener listener = new TcpListener(ip,listenport); //创建SocketSocket socket = listener.AcceptSocket();//创建byte[]接收请求byte[] buffer=new byte[1024];//使用Socket的Receive方法获得请求;socket.Receive(buffer);return buffer;}private byte[] TcpClient() {string ip="192.168.0.1"; //设置服务器IPint listenPort = 6666; //设置端口//创建客户端Socket,并连接服务器TcpClient tcpClient = new TcpClient(ip, listenPort);//创建NetWorkStream,用来操作数据流NetWorkStream networkStream = tcpClient.GetStream();string command = "你需要传递的内容";//对发送的内容进行转换byte[] buffer = System.Text.Encoding.UTF8.GetBytes(command.ToCharArray());//将发送内容写入网络流发送至服务器networkStream.Write(outbytes, 0, outbytes.Length); //接收返回内容byte[] outbytes = new byte[2048]; networkStream.Read(buffer, 0, buffer.Length); return outbytes; } 你要将服务器端的IP固定,申请个域名或者在路由器上将你的IP对外暴露(这样既不安全,易受攻击) 刚学JAVA就出了错误.菜鸟急求大虾 关于List中分页的问题,有没有什么好的办法解决呢? 怎样在读入一个JAVA源文件后,<<<<<删除其中的注释>>>>>,<<<<并加上行号>>>>>输出到一个新生成的文件中 **高分求教:如何在Java程序中调用javac编译一个类? 如何实现同时显示不同类型的内容 谁有JTree的完整例子啊,最好有填加删除结点的功能!! 请教一个读写文件的小问题 这个是为什么 一个关于组合查询的问题 问个java2核心技术例子中的一个问题(RMI) java 按钮问题 java 简单的学生信息管理 不涉及sql
socket 因该本质上应该包括 对方的ip 和 port 和 你自己的ip 和port 。
传东西就像 邮寄东西一样,要知道对方的地址和门牌号啊,ip 和 port 就起着这样的作用吧~
public Socket(String host, int port)
你把socket绑定到 对方的ip port就可以了~
你不是C/S 架构的吗?装到其他电脑的是做Client 客户端的,你肯定有个服务端Server啊! 客户端绑定你的服务端的ip port ,也就是只需知道你那台 服务器server端机子的ip 就可以了啊!Server端监听就可以了~
但是我还要给Client端传消息,就必须知道他的ip和地址,如果Client给我传消息,我要回复怎么办?
Socket clientSocket = serverSocket.accept();
sockets.add(clientSocket);
另一端:socket = new Socket("ip", port);
socket=server.accept();
System.out.println("客户端信息:"+socket.getRemoteSocketAddress());
public byte[] Socket(){
string ip="192.168.0.1"; //设置服务器IP
int listenPort = 6666; //设置监听的端口
//创建Tcp监听器
TcpListener listener = new TcpListener(ip,listenport);
//创建Socket
Socket socket = listener.AcceptSocket();
//创建byte[]接收请求
byte[] buffer=new byte[1024];
//使用Socket的Receive方法获得请求;
socket.Receive(buffer);
return buffer;
}
private byte[] TcpClient() {
string ip="192.168.0.1"; //设置服务器IP
int listenPort = 6666; //设置端口
//创建客户端Socket,并连接服务器
TcpClient tcpClient = new TcpClient(ip, listenPort);
//创建NetWorkStream,用来操作数据流
NetWorkStream networkStream = tcpClient.GetStream();
string command = "你需要传递的内容";
//对发送的内容进行转换
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(command.ToCharArray());
//将发送内容写入网络流发送至服务器
networkStream.Write(outbytes, 0, outbytes.Length);
//接收返回内容
byte[] outbytes = new byte[2048];
networkStream.Read(buffer, 0, buffer.Length);
return outbytes;
}