Tag: 套接字

将Socket转换为String,反之亦然

我是Android的套接字编程(Java)。 如何将我的套接字转换为字符串并将该字符串表示转换回套接字? 例如,考虑一个Socket ss 。 我想要的是这样的事情: String strss = ss.tostring(); 然后 Socket s = new Socket(strss); 我想将Socket(即稍后重新创建该套接字所需的详细信息)保存到数据库中(作为字符串),之后我需要将其重新转换为Socket以在我的应用程序中使用它!

Java NIO。 SocketChannel.read方法一直返回0.为什么?

我试着了解java NIO是如何工作的。 特别是SocketChannel如何工作。 我写下面的代码: import java.io.*; import java.net.*; import java.nio.*; import java.nio.channels.*; public class Test { public static void main(String[] args) throws IOException { SocketChannel socketChannel = SocketChannel.open(); socketChannel.configureBlocking(false); socketChannel.connect(new InetSocketAddress(“google.com”, 80)); while (!socketChannel.finishConnect()) { // wait, or do something else… } String newData = “Some String…”; ByteBuffer buf = ByteBuffer.allocate(48); buf.clear(); buf.put(newData.getBytes()); buf.flip(); while […]

连接python套接字和java套接字

我一直在尝试在Java客户端套接字和Python服务器套接字之间发送一个简单的字符串。 这是服务器套接字的代码: HOST=” PORT=12000 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADRR,1) s.bind((HOST,PORT)) s.listen(5) device=variador() while True: conn,addr=s.accept() if data==”turn_on”: respuesta=device.send_order(variador.start_order) conn.send(respuesta+’\n’) conn.close() 并且客户端代码是: try { Socket socket = new Socket(“192.168.10.171”, 12000); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream())); BufferedReader stdIn = new BufferedReader( new InputStreamReader(System.in)); out.print(command); out.close(); in.close(); socket.close(); } catch (UnknownHostException e) { […]

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

Android蓝牙java.io.IOException:bt socket关闭,读取返回:-1

我正在尝试编写一个代码,该代码仅连接到运行Android 5.0 KitKat的设备上的(仅用于)配对设备。 无论我尝试过多少东西,我仍然会遇到这个错误。 这是我尝试的最后一个代码,它似乎正在做我见过人们报告成功的一切。 谁能指出我做错了什么? java.io.IOException: bt socket closed, read return: -1 at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:517) at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:96) at java.io.InputStream.read(InputStream.java:162) at biometricreader.BluetoothReaderService$ConnectedThread.run(BluetoothReaderService.java:415) 我的java代码是 /** * This class does all the work for setting up and managing Bluetooth * connections with other devices. It has a thread that listens for * incoming connections, a thread for connecting […]

PHP Socket Java消息交换

我正在尝试在PHP页面和运行Java服务器之间进行通信。 只需通过套接字进行简单的字符串交换。 这是我处理连接的线程的Java代码: InputStream in = clientSocket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())); String request; if((request=br.readLine())!=null){ System.out.println(“got the following request: ” + request); out.write(request +”\n”); out.flush(); out.close(); in.close(); } 我用简单的Java客户端测试它,它发送字符串然后接收结果并打印回来并且它工作。 客户端和服务器都具有相同的输出。 这是我的PHP代码: $fp = @fsockopen ($host, $port, $errno, $errstr); if($fp){ fputs($fp, $str); //echo fgets($fp); } close($fp); 将字符串发送到服务器,服务器接收它。 但是一旦我用fgets($ fp)取消注释,我被阻止,直到1-2分钟后发生某种超时。 […]

Java网络文件传输问题

我正在编写一个可以测量本地网络速度的小型java程序。 这是我第一次使用套接字,但我已经整理了一个有效的程序。 唯一的问题是测量结果远非准确(方式太低)。 这是服务器代码: ServerSocket servsock = new ServerSocket(13267); while (true) { System.out.println(“Waiting…”); Socket sock = servsock.accept(); System.out.println(“Accepted connection : ” + sock); File myFile = new File(“test.txt”); FileInputStream in = new FileInputStream(myFile); OutputStream out = sock.getOutputStream(); int bytes = 0; byte[] buffer = new byte[8192]; int len; while ((len = in.read(buffer)) > 0) { […]

多个套接字导致ConnectException:连接被拒绝:连接

我在Windows XP上用Eclipse编程java。 我有一个多进程模拟,它使用ProcessBuilder来运行服务器和两个客户端。 服务器启动一个线程来侦听两个不同的套接字 – 每个客户端一个。 我可以为每个客户注释掉代码,让其他工作完全正常。 当我尝试同时运行它们时,一个客户端将始终使用ConnectException错误:连接被拒绝:连接。 它似乎是哪个客户端运行速度较慢,但​​很难说。 我可以在启动服务器之后但在客户端之前暂停,netstatvalidation两个套接字都处于活动状态。 可能是什么导致了这个? 我在下面有一些简化的代码。 更新:根据评论,我编辑了代码以在单个套接字上multithreading服务器,但我仍然遇到同样的问题。 下面的代码反映了这些变化。 看来套接字是由一个客户端打开和关闭,然后另一个客户端有机会打开它。 我可以在每个客户端的末尾抛出暂停语句,允许另一个完成,但这是一个修复,而不是解决方案。 所以现在真正的问题是,在指示它关闭之前,如何保持ServerSocket的监听? 服务器 try{ server = new ServerSocket(sockNum); } catch (IOException e) { System.out.printf(“Could not listen on port %d\n”,sockNum); System.exit(-1); } while(true){ ClientWorker w; try{ Socket connection = server.accept(); w = new ClientWorker(connection); Thread t = new Thread(w); t.start(); } […]

Android(Java)中MediaRecorder的LocalSocket(Unix域)客户端 – 服务器数据流问题

我没有得到的是Unix域套接字之间的数据流。 我理解Unix Domain Socket的数据流是 LocalSocket client .connect() – > LocalServerSocket server .accept() 客户端将数据发送到服务器,直到我理解。 然而,对于来自Android的MediaRecorder的流式video/音频,经过大量研究后,我看到每个使用LocalSocket代替MediaRecorder文件的例子原则如下: https://static.foxdogstudios.com/static/presentations/keeping-it-real-time.html#/9 LocalServerSocket server = new LocalServerSocket(“some name”); receiver = new LocalSocket(); receiver.connect(server.getLocalSocketAddress()); LocalSocket sender = server.accept();//LocalSocket not LocalServerSocket as in Source link // … // Give the MediaRecorder our fake file recorder.setOutputFile(sender.getFileDescriptor()); 此代码如下所示: MediaRecorder – > LocalSocket sender – > LocalServerSocket […]

为什么使用Java套接字从未到达输入流的末尾?

我正在用Java编写一个简单的代理。 我无法将整个给定请求读入字节数组。 具体来说,在下面的循环中,即使客户端已经发送了它将要发送的所有数据(即,永远不会到达流的末尾),对“读取”的调用也会阻塞。 因为我不能确定是时候开始写输出直到我读完整个输入,这会造成一些麻烦。 如果我终止与服务器的连接,最终会到达流的末尾,一切都顺利完成(来自客户端的所有数据,在这种情况下,Firefox请求www.google.com,已被服务器读取) ,它可以根据需要处理它,但显然它不能发回任何东西给客户端)。 public static void copyStream(InputStream is, OutputStream os) throws IOException { int read = 0; byte[] buffer = new byte[BUFFER_SIZE]; while((read = is.read(buffer, 0, BUFFER_SIZE)) != -1) { os.write(buffer, 0, read); } return; } InputStream直接来自客户端套接字(getInputStream(),然后缓冲); OutputStream是ByteArrayOutputStream。 我究竟做错了什么?