Tag: serversocket

UDP通信需要Java ServerSocket吗?

我在考试中有以下问题: “我们假设你想为客户端使用UDP。你是否需要创建一个新的套接字来管理UDP中的并行连接?为什么或为什么不呢?如果多个客户端连接到该套接字会怎样?” 该问题还引用了一个Java类TCPServer.java ,它创建了ServerSocket,稍后在一个while(true)循环中,它接受连接并为来自用户的传入连接请求创建套接字。 在我看来,TCP Server仅用于TCP连接,因此不可能为UDP客户端使用相同的服务器端代码。

使用ServerSocket和HTML Client上传文件。 陷入InputStream.read()

为了理解套接字编程的概念,我创建了一个服务器和一个客户端。 客户端将发送文件,服务器应将其保存在某个位置。 (即文件上传)。 服务器: package com.test.socket.server; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class WebServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8081); Socket socket = serverSocket.accept(); System.out.println(“Received request”); InputStream inputStream = socket.getInputStream(); OutputStream out = new FileOutputStream(“yoyo.png”); System.out.println(“Reading….”); byte[] bytes = new […]

套接字Backlog行为

如果Serversocket在其待办事项中有充满请求并且执行长时间运行的作业,则套接字行为将是什么。 当我尝试这个,从Windows telnet是好的,它连接。 但是从unix它得到“拒绝连接” 。 我的应用程序是用java编写的,并在IBM jvm上运行。 顺便说一下,我的应用程序没有响应来自unix的telnet。 没有重新调整意味着它正在写“tyring ……”并挂起,而不是拒绝或连接。 任何人都可以certificate这种行为吗? 谢谢。

套接字 – 软件导致连接中止:recv失败

我正在尝试构建一个简单的TCPmultithreading客户端/服务器应用程序。 每当客户端( Socket )连接到ServerSocket并发送对应于下面所示的简单可序列化类的Object ( Message )时,服务器在其ObjectInputStream尝试从客户端Socket读取SocketExpection时崩溃。 Message.java package storageserver; import java.io.Serializable; public class Message implements Serializable { private static final long serialVersionUID = 27015L; public int ClientStatus; // 0 – NotLogged ::: 1 – Logged public String Command; public String[] Commands; public Message() { this.ClientStatus = 0; this.Command = null; this.Commands = null; } […]

停止ServerSocket accept()循环线程

我正在实现一个非常基本的API来更好地控制ServerSocket和Sockets,但是由于我缺乏线程知识,我处理的是一个非常奇怪的问题。 让我解释一下。 在我的类SocketStreamReceiver中,我使用辅助线程来监听带有ServerSocket#accept()新套接字。 有两种方法:start()和stop()客户端可以用来启动(创建一个线程并开始用accept()监听)并停止(关闭ServerSocket并销毁线程)我的SocketStreamReceiver。 你将如何实现stop()方法? 请记住,stop()可以在doSomething()内部调用,在start()启动的同一个辅助线程中。 您可以更改任何所需内容:如果需要,可以在线程内创建ServerSocket,就在while(运行)之前。 public class SocketStreamReceiver{ … private Thread thread; private ServerSocket server; private boolean running; … public void start () throws IOException{ if (thread != null) return; server = new ServerSocket (port); thread = new Thread (new Runnable (){ @Override public void run (){ try{ while (running){ Socket socket = […]

Java – 通过浏览器/ URL连接到ServerSocket

我正在编写一个软件,我受限于无法使用socket连接到使用ServerSocket的Java应用程序。 我以为我会尝试使用URL连接,因为可以定义要连接的端口 例如: 127.0.0.1:62666 我让我的服务器应用程序侦听连接并将输入写入jTextArea。 通过浏览器连接到服务器(127.0.0.1:62666)时,它输出: GET / HTTP/1.1 GET /favicon.ico HTTP/1.1 我有另一个应用程序通过URL连接连接到ServerSocket: try{ URL url = new URL(“http://127.0.0.1:62666”); URLConnection connection = url.openConnection(); connection.setDoOutput(true); connection.connect(); PrintWriter writer = new PrintWriter(connection.getOutputStream()); writer.print(“Hello”); System.out.println(“should have worked”); writer.flush(); writer.close(); }catch(IOException e){ e.printStackTrace(); } 它打印出“应该有效”消息fyi,但它从不向服务器的jTextArea写入任何内容。 服务器应用程序的代码如下所示: try{ ServerSocket serverSock = new ServerSocket(62666); while(doRun){ Socket sock = serverSock.accept(); BufferedReader reader […]

java socket:在接受之前听?

上下文:由于DOS攻击,我在我的程序内存中的某个集合中有一张禁止ip地址的表。 我使用TCP服务器套接字,接受每个连接,然后检查IP地址,然后我关闭连接或继续处理客户端。 我想知道在Java中是否可以监听TCP服务器套接字上的连接,并接受或拒绝以某种方式建立tcp链接,给定请求客户端的IP地址。 我的意思是不必接受&关闭客户端套接字,这是我已经在做的事情。 谢谢。

什么可能导致“IO错误java.net.SocketException:select failed”?

我的笔记本电脑上运行的服务器程序,相同的路由器和相同的代码。 它工作正常,客户可以连接。 然而,当我将工作区复制到我的PC并运行它时,我得到了这个废话: IO错误java.net.SocketException:选择失败 这是代码…… public static void main(String[] args) { System.out.println(“running server!”); int nreq = 1; try{ ServerSocket sock = new ServerSocket(7331); for(;;){ Socket newsock = sock.accept(); System.out.println(“Creating thread…”); //Thread t = new ThreadHandler(newsock, nreq); //t.start(); nreq++; } } catch(Exception e) { System.out.println(“IO error ” + e); } 基本上什么可能导致这个错误(我在网上找不到有用的信息)在一台PC而不是另一台PC上发生? 它必须与PC本身有关。 我最困惑。 基本上它无法打开套接字? 这是完整的堆栈跟踪: java.net.SocketException: […]

ServerSocket – 是否真的有必要关闭()它?

我有这个该死的结构: public void run() { try { if (!portField.getText().equals(“”)) { String p = portField.getText(); CharSequence numbers = “0123456789”; btnRun.setEnabled(false); if (p.contains(numbers)) { ServerSocket listener = new ServerSocket(Integer.parseInt(p)); while (true) { Socket socket = listener.accept(); try { PrintWriter out = new PrintWriter(socket.getOutputStream(), true); out.println(“Hi there, human.”); } finally { socket.close(); } }} else { JOptionPane.showMessageDialog(null, “Only […]

DataInputStream给出了java.io.EOFException

我创建了小型CLI客户端 – 服务器应用程序。 加载服务器后,客户端可以连接到服务器并将命令发送到服务器。 第一个命令是获取服务器加载的文件列表。 一旦建立套接字连接。 我请求用户输入命令。 ClientApp.java Socket client = new Socket(serverName, serverPort); Console c = System.console(); if (c == null) { System.err.println(“No console!”); System.exit(1); } String command = c.readLine(“Enter a command: “); OutputStream outToServer = client.getOutputStream(); DataOutputStream out = new DataOutputStream(outToServer); out.writeUTF(command); 然后服务器捕获用户的命令并发送相应的回复。 SeverApp.java – Socket server = serverSocket.accept(); DataInputStream in = new […]