Tag: serversocket

使用DataOutputStream将消息写入客户端套接字仅在关闭Client Socket后发送到服务器套接字为什么?

我用Java编写了一个Socket-Client编程。 我正在使用DataOutputStream将消息发送到服务器套接字。 有时,DataOutputstream上的写入消息未发送到ServerSocket。 我认为这是因为我发送消息后没有冲洗。 我这样做但没用。 如果我终止类执行,那么只有我从ServerSocket接收消息。 我的代码: public class LoggingClient { LinkedBlockingQueue messages = new LinkedBlockingQueue(); public static LoggingClient clientObj; /* * waiting 2 seconds for connecting centralized log server . If it’s not reachable writing log’s in local machine * this log’s will be collected on eclipse restart. */ public static final int SOCKET_TIMEOUT […]

如何在使用服务器套接字后关闭端口

在我的应用程序中,我使用一些端口创建一个ServerSocket实例。 完成后,我关闭套接字,但当我尝试在同一端口上创建一个新的ServerSocket时,它会抛出: “java.net.BindException: Address already in use” 如果我使用不同的端口创建ServerSocket ,那么它可以工作。 ServerSocket.isClosed也返回true 问题是什么? public void run() { try { BufferedInputStream bufferedinputstream = new BufferedInputStream( new FileInputStream(fileReq)); BufferedOutputStream outStream = new BufferedOutputStream( cs.getOutputStream()); byte buffer[] = new byte[1024]; int read; System.out.println(cs); while ((read = bufferedinputstream.read(buffer)) != -1) { outStream.write(buffer, 0, read); outStream.flush(); } System.out.println(“File transfered”); outStream.close(); bufferedinputstream.close(); try […]

Java套接字EOFException

我使用RMI和套接字在客户端集之间传输文件。 问题是当运行下面的代码有时我在客户端获得此exception: java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2671) at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3146) at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:858) at java.io.ObjectInputStream.(ObjectInputStream.java:354) at javafxcyberwind.serverSocket.run(serverSocket.java:38) at java.lang.Thread.run(Thread.java:748) 这是我的代码示例,例外情况在注释行中: 客户: Server_MethodsPEER S = (Server_MethodsPEER) Naming.lookup(“rmi://” + ip + “:” + port + “/” + email); Server_Methods R = S.peer(); R.uploadToServer(fileName); Socket s = new Socket(ip, R.getServerSocketPort()); File fres = new File(crep + fileName); FileInputStream inf = new FileInputStream(fres); […]

serversocket类如何在同一端口上提供多个客户端连接?

当使用Socket类时,一个是在某个端口上与服务器建立TCP连接,但在服务器上,ServerSocket能够为每个接受请求处理多个客户端连接,并将其委托给一个线程来为请求提供服务。 但是,如何使ServerSocket类在同一端口上接受多个tcp连接。 这是否意味着由操作系统来决定它允许的连接数或允许的最大积压数是多少,这可以由OS上的应用程序控制(我的意思是java受OS支持的最大积压限制)并且是TCP规范中的积压连接是否有任何特权? 最好的反馈, 凯沙夫

使用服务器和UI敲击Knock应用程序

我正在创建一个简单的Knock Knock应用程序(套接字编程),其中有一个localhost服务器,并且有一个客户端。程序很简单,服务器会告诉敲敲笑话,这是它应该如何去, Server: Knock Knock Client: Who’s there? Server: Turnip. Client: Turnip Who? Server: Turnip the heat. 这就是程序应该如何进行的。 但事情是我的GUI没有显示任何消息。 在我的文本区域。 这是我的代码。 服务器: import java.net.*; import java.io.*; public class KnockKnockServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(4444); } catch (IOException e) { System.err.println(“Could not […]

如何使用IP地址和端口号连接到服务器套接字(客户端在与服务器不同的机器上运行)

客户端程序 public class client implements Runnable { protected static String server_IP = “141.117.57.42”; private static final int server_Port = 5555 ; protected static String client_IP ; public static void main(String[] args) throws IOException{ final String host = “localhost”; int init = 0 ; try { InetAddress iAddress = InetAddress.getLocalHost(); client_IP = iAddress.getHostAddress(); System.out.println(“Current IP address […]

Java ServerSocket连接限制?

我正在使用套接字运行一些测试,我遇到了一些奇怪的行为:ServerSocket将在第50个客户端Socket连接到它之后拒绝连接,即使该客户端套接字在下一个客户端套接字打开之前关闭,即使延迟是在连接之间添加。 以下程序是我的实验代码,它在当前状态下不会抛出任何exception并正常终止。 但是,如果Socket[] clients的数组大小增加到50以上,则在第50个连接之后尝试连接的任何客户端套接字都会被服务器套接字拒绝。 问题: 为什么50是服务器套接字拒绝套接字连接的计数? public static void main(String[] args) { try (ServerSocket server = new ServerSocket(2123)) { Socket[] clients = new Socket[50]; for (int i = 0; i < clients.length; i++) { clients[i] = new Socket("localhost", 2123); System.out.printf("Client %2d: " + clients[i] + "%n", i); clients[i].close(); } } catch (Exception e) { e.printStackTrace(); […]

从html表单读取POST数据发送到serversocket

我尝试在Java中编写最简单的服务器应用程序,显示带有textarea输入的html表单,在提交后,我可以解析在该textarea中键入的xml。 现在我构建基于serversocket的简单服务器: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class WebServer { protected void start() { ServerSocket s; String gets = “”; System.out.println(“Start on port 80”); try { // create the main server socket s = new ServerSocket(80); } catch (Exception e) { System.out.println(“Error: ” + e); return; } System.out.println(“Waiting for […]

Java Server – 多个端口?

我即将编程服务器,但我想知道我的想法是否可行。 我的程序将输出到多个端口上的多个客户端 – 每个端口可以被多个客户端访问。 通常我会使用线程套接字服务器,但在这种情况下我需要它为多个端口工作。 我想到的用法是在下面的模糊伪代码中: 启动服务器 侦听多个端口上的传入连接 识别要连接的端口 如果是端口1,则启动一个侦听客户端的线程并输出消息类型x 如果是端口2,则启动一个侦听客户端的线程并输出消息类型y 希望这有点意义,你可以看到我正在尝试做什么。 简单地说:听取选定的端口,根据连接的端口创建一个线程套接字连接。 这是可行的,还是我要结束multithreading线程套接字服务器? 编辑:更改措辞以更好地反映问题。

连接两个客户端套接字

假设Java有两种套接字: 服务器套接字“ServerSocket” 客户端套接字或只是“套接字” 想象一下两个过程的情况: X =客户 Y =服务器 服务器进程Y:有一个“ServerSocket”,正在侦听TCP端口 客户端进程X:通过“Socket”向Y发送连接请求。 Y:然后accept()方法返回一个新的客户端类型“Socket”, 当它发生时,两个套接字变得“互连”, 所以:客户端进程中的套接字,与服务器进程中的套接字相连。 然后:通过套接字X读/写就像通过套接字Y读/写。 现在,两个客户端套接字相互连接!! 但… 如果我在同一个进程中创建两个Client套接字,我想让它们“互连”怎么办? ……甚至可能? 假设如何在不使用中间ServerSocket的情况下使两个客户端套接字互连? 我已经通过创建两个Thread来连续读取A和写入B,以及其他用于读取B和写入A来解决它… 但我认为可能是一种更好的方式……(使用客户端 – 服务器方法不需要那些世界耗能的线程) 任何帮助或建议将不胜感激! 谢谢 编辑: 应用程序示例:“现有服务器应用程序可以转换为客户端应用程序”,例如VNC服务器,一个客户端套接字连接到VNC服务器,并创建其他客户端套接字(连接到中间服务器),然后应用程序互连两个客户端导致VNC服务器是客户端应用程序! 然后,不需要公共IP。 VNCServer — MyApp —> |中间服务器| <—用户