服务器代码:
package exp1;
import java.net.*;
import java.io.*;
public class MyServerSocket{
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket ss=new ServerSocket(2050);
System.out.println("server is waiting...");
Socket s=ss.accept();
InetAddress ad= InetAddress.getByName("hostname");
OutputStream os=s.getOutputStream();
System.out.println("s"+ ad.getHostAddress());
byte ins=Byte.parseByte(ad.getHostAddress());
os.write(ins);
ss.close();
}
}
客户代码:
package exp1;
import java.io.*;
import java.net.*;
public class MyClientSocket {
public static void main(String[] args) throws Exception{
Socket s=new Socket(InetAddress.getLocalHost(),2050);
InputStream is=s.getInputStream();
System.out.println("Client is ready to receive data");
int d=0;
while(d!='#')
{
d=is.read();
System.out.print((char)d);
}
}
}
错误:
服务器端:
线程“主”中的异常 java.lang.数字格式异常:对于输入字符串:“ip”
at Java . base/Java . lang . numberformatexception . for inputstring(numberformatexception . Java:67)
位于Java . base/Java . lang . integer . parse int(integer . Java:660)
位于java.base/java.lang.Byte.parseByte(Byte.java:193)
位于Java . base/Java . lang . byte . parsebyte(byte . Java:219)
at exp1/exp1.MyServerSocket.main([MyServerSocket.java:14](https://MyServerSocket.java: 1
我正在尝试在客户端上显示本地主机的IP,但收到错误。
getHostAddress
返回地址的字符串表示形式。因此,此方法返回无法解析为字节的192.168.1.100
。您可以将字符串作为字节数组传递,但这不是最佳解决方案,因为IPv4地址只有4个字节,但string192.168.1.100
长13个字节!
此外,我不明白行< code>while (d!= '#')因为您从不发送任何< code>#符号。
这是适合我的代码。
class MyServerSocket {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(2050);
System.out.println("server is waiting...");
Socket s = ss.accept();
InetAddress ad= InetAddress.getByName("hostname");
try (OutputStream os = s.getOutputStream()) {
System.out.println("s"+ ad.getHostAddress());
os.write(ad.getAddress());
}
ss.close();
}
}
class MyClientSocket {
public static void main(String[] args) throws Exception{
Socket s=new Socket(InetAddress.getLocalHost(),2050);
try (InputStream is = s.getInputStream()) {
System.out.println("Client is ready to receive data");
byte[] address = is.readAllBytes();
InetAddress ad = InetAddress.getByAddress(address);
System.out.println(ad.getHostAddress());
}
}
}
附言:关闭您打开的所有资源是避免泄漏的好做法。在此示例中,我使用了使用资源进行尝试的构造。
我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se
[服务器]:
我正在使用TCP / IP流编写客户端服务器Java程序,我的服务器连接到oracle数据库。当客户端请求一些信息时,服务器处理查询,即返回一个包含一些行的列(例如 5)。我想将整列发送回客户端,我能够发送和接收单行数据,但不能发送和接收多行(因为表包含许多行 i,e 行)....任何帮助都是可取的
我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s
我试图将一个对象从服务器端发送到客户端,但找不到问题。以下是我在客户端遇到的错误: 下面是服务器端方法:无限循环中的separate方法只是从文件中读取,并将用户名和密码解析为ArrayList,这是服务器类中的实例变量。 以下是从服务器请求信息的客户端: 我对学习服务器套接字和套接字还不熟悉,但我在这里试图实现的是以下目标。当我在另一节课上按下按钮时,我会这样做: 几乎是一个通过服务器到clei
创建 TCP 客户端 最简单的方法来创建一个 TCP 客户端,使用默认选项如下所示: NetClient client = vertx.createNetClient(); 配置 TCP 客户端 如果你不想使用默认值,则创建TCP 客户端时,通过传入NetClientOptions实例可以配置: NetClientOptions options = new NetClientOptions().s