Tag: 套接字

使用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 […]

Android Java ServerSocket端口号不是它应该的

嗨,我正在进行android开发,并在使用套接字API时发现了一些奇怪的东西。 在我创建的套接字之间 ServerSocket server = new ServerSocket(4444); Socket client = server.accept(); 和 client.getPort(); 不是4444。 由于端口号几乎是随机的,因此客户端无法与服务器应用程序通信。 任何信息或建议都会有所帮助! 完整的示例项目在这里。 http://vext.eclipselabs.org.codespot.com/files/SocketTest.zip 提前致谢!

在AsyncTask中维护TCP连接

我正在使用AsyncTask建立TCP连接并通过它发送/接收数据。 我目前的代码现在看起来像这样: public class NetworkTask extends AsyncTask { Socket nsocket; //Network Socket InputStream nis; //Network Input Stream OutputStream nos; //Network Output Stream boolean bSocketStarted = false; byte[] buffer = new byte[4096]; @Override protected void onPreExecute() { Log.i(TAG, “onPreExecute”); } @Override protected Boolean doInBackground(Void… params) { //This runs on a different thread boolean result = false; […]

使用scala获取当前计算机的公共IP地址

我想获得一个IP地址,可以使用scala在我的机器或局域网外部访问。 用例场景:Web服务正在计算机上运行。 在其响应中,它应该返回其端点之一的URL。 所以现在我必须提供运行Web服务的机器的IP 我使用NetworkInterface.getNetworkInterfaces()来获取主机上所有已知的网络接口,然后迭代每个NI的地址。 但在这种情况下,我得到了许多IP地址。 如何从所有这些中找出正确的IP。 以下是scala中的代码段: private def ipAddress: String = { val enumeration = NetworkInterface.getNetworkInterfaces.asScala.toSeq val ipAddresses = enumeration.flatMap(p => p.getInetAddresses.asScala.toSeq ) val address = ipAddresses.find { address => val host = address.getHostAddress host.contains(“.”) && !address.isLoopbackAddress && !address.isAnyLocalAddress && !address.isLinkLocalAddress }.getOrElse(InetAddress.getLocalHost) }

带序列号的UDP

我正在尝试为Java中的类赋值实现可靠的UDP协议。 我已经设法将确认添加到收到的每个数据报包中,但是我在发送的数据报包中实现序列号时遇到了问题。 谁能建议一个简单的方法来实现这个? @EJP我试过实现你刚刚建议的内容。 这是我的代码,直到现在(它仍然非常原始 – 我正在使用命中和尝试方法来实现它) 服务器端 public class TestServer extends Activity { private DatagramSocket serverSocket; Thread serverThread = null; byte[] incomingData; byte[] outgoingData; //int numBytesRead = 0; int ackSent = 0; int numPackRecv = 0; int BUF_SIZE = 1024; String msg = “ACK”; BufferedInputStream data=null; BufferedOutputStream out =null; public static final int SERVERPORT […]

在httpclient.execute中的HttpClientConnectionOperator.connect时忽略套接字读取超时

下面是jstack的输出,看线程,nid = 0x771d(30493)。 几个小时前就开始了。 “taskScheduler-6” prio=10 tid=0x00007f4479e07800 nid=0x771d runnable [0x00007f446e63a000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketInputStream.read(SocketInputStream.java:122) at sun.security.ssl.InputRecord.readFully(InputRecord.java:442) at sun.security.ssl.InputRecord.readV3Record(InputRecord.java:554) at sun.security.ssl.InputRecord.read(InputRecord.java:509) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934) – locked (a java.lang.Object) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332) – locked (a java.lang.Object) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory .java:275) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java: 254) at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:1 23) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionMa nager.java:318) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) […]

客户端重新连接java套接字

好吧,我需要编写一个能够检测客户端和服务器之间连接的客户端…一旦服务器关闭并恢复我的客户端需要能够将其连接回服务器..但我真的不是确定如何做…如果可能的话,任何帮助? public TEST(String serverIP, int serverPort){ Log(“Connection to the Server….”); try{ socket = new Socket(serverIP, serverPort); Log(“Connected to the server : “+socket); start(); } catch(UnknownHostException uhe){ System.out.println(“Unknown Host: “+ uhe.getMessage()); } catch (IOException ioe){ System.out.println(“IO Exception: “+ioe.getMessage()); } String readline = “”; streamOutput.println(“TRY test”); while(true){ try{ readline = streamInput.readLine(); System.out.println(readline); } catch (IOException ioe){ System.out.println(“Error […]

客户端中的NoRouteToHostException

我正在开发一个涉及服务器和客户端的程序,我尝试监听端口,然后从客户端向该端口发送消息。 但是,这样做我得到NoRouteToHostException 。 我做了一个简单的客户端和服务器应用程序来测试我是否可以发送和接收给定服务器和客户端的消息。 服务器: public class Server{ public static void main(String [] args) throws Exception{ ServerSocket s = new ServerSocket(8001); s.accept(); } } 客户: public class Client{ public static void main(String [] args){ Socket s = new Socket(IP, port); PrintWriter p = new PrintWriter(s.getOutputStream(), true); p.println(“Hello World”); s.close(); } } Exception in thread “main” […]

JavamultithreadingWeb服务器 – 未收到多个GET请求

我有一个非常基本的multithreadingWeb服务器的启动,它可以接收所有GET请求,只要它们一次来一个。 但是,当多个GET请求同时进入时,有时它们都会被收到,有时则会丢失一些。 我通过创建一个html页面测试了这一点,该页面包含指向我的web服务器并在firefox中打开页面的多个图像标记。 我总是使用shift + refresh。 这是我的代码,我必须做一些根本错误的事情。 public final class WebServer { public static void main(String argv[]) throws Exception { int port = 6789; ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(port); } catch(IOException e) { System.err.println(“Could not listen on port: ” + port); System.exit(1); } while(true) { try { Socket clientSocket = […]

Spring Integration – 可靠的TCP,适用于大批量应用

我正在使用Spring Integration for TCP服务器,它可以连接几千个客户端。 我需要服务器在负载过重的情况下限制客户端并且不丢失消息。 我的服务器配置: 由于连接工厂的默认任务执行程序是无限制的,因此我使用池化任务执行程序来防止内存不足错误。 一个简单的负载测试客户端: public class TCPClientTest { static Socket socket; static List sl = new ArrayList(); static DataOutputStream out; public static void main(String[] args) throws Exception { for (int i = 0; i < 10000; i++) { socket = new Socket("localhost", 60000); sl.add(socket); out = new DataOutputStream(socket.getOutputStream()); out.writeBytes("connection " + […]