Tag: 套接字

Java – 通过Java套接字广播语音

我创建了一个从客户端接收声音的服务器应用程序,然后我广播这个存储为字节的声音并将字节发送回连接到服务器的客户端。 现在我只使用一个客户端进行测试,客户端正在接收语音,但声音一直都是口吃。 有人可以告诉我我做错了什么吗? 我想我理解为什么声音播放不顺畅但不明白如何解决问题。 代码是吼叫。 客户端: 将语音发送到服务器的部分 public void captureAudio() { Runnable runnable = new Runnable(){ public void run() { first=true; try { final AudioFileFormat.Type fileType = AudioFileFormat.Type.AU; final AudioFormat format = getFormat(); DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); line = (TargetDataLine)AudioSystem.getLine(info); line.open(format); line.start(); int bufferSize = (int) format.getSampleRate()* format.getFrameSize(); byte buffer[] = new byte[bufferSize]; […]

java使用套接字发送文件

我正在尝试使用Java将文件从一台计算机发送到另一台计算机。 我已经编写了下面的代码,如果发送方和接收方都在同一台计算机上启动,但如果它们在不同的机器上工作,则接收文件大小比原始文件大,并且它已损坏,它可以正常工作。 注意:我正在尝试传输最大10 MB的文件。 我怎样才能解决这个问题? 发件人: ServerSocket server_socket = new ServerSocket(8989); File myFile = new File(myPath); Socket socket = server_socket.accept(); int count; byte[] buffer = new byte[1024]; OutputStream out = socket.getOutputStream(); BufferedInputStream in = new BufferedInputStream(new FileInputStream(myFile)); while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); out.flush(); } socket.close(); 接收器: Socket socket = new […]

找出当前Java VM中打开的网络套接字

我正在编写一个端到端测试,我的Java程序发布了它的所有资源 – 线程,服务器套接字,客户端套接字。 它是一个库,因此通过退出JVM释放资源不是一种选择。 测试线程的释放很容易,因为你可以向ThreadGroup询问其中的所有线程,但是我还没有找到一个很好的方法来获取当前JVM正在使用的所有网络套接字的列表。 有没有办法从JVM获取所有客户端和服务器套接字的列表,类似于netstat? 我在Java 7上使用Netty和OIO (即java.net.ServerSocket和java.net.Socket )。该解决方案需要在Windows和Linux上运行。 我的第一个偏好是使用纯Java从JVM中询问它。 我试图寻找一个MX Bean或类似的,但没有找到任何。 另一个选择可能是连接到JVM的分析/调试API并询问Socket和ServerSocket的所有实例,但我不知道如何做到这一点以及是否可以在没有本机代码的情况下完成(AFAIK, JVMTI仅限本机) )。 此外,它不应该使测试变慢(即使我最慢的端到端测试只有0.5秒,其中包括启动另一个JVM进程)。 如果询问JVM不起作用,第三个选项是创建一个设计,在设置时跟踪所有套接字。 这样做的缺点是可能会遗漏一些创建套接字的地方。 由于我使用Netty,它似乎可以通过包装ChannelFactory和使用ChannelGroup来实现 。

如何创建基本的Java Server?

基本上我想要一个可以连接多个人的基本Java服务器,并且当其中一个连接的客户端(已经在Obj-c中编码)向其发送数据时,它会将其发送回所有连接的人。 我是一个真正的Java新手,我不会在可预见的未来需要Java而不是这样,所以我希望尽快让它出来,而不是从头开始正确地学习Java。 因此,如果任何人有一些这方面的源代码或者教程,我将不胜感激。 谢谢:) Ozzie

带套接字的Java客户端/服务器应用程序?

我正在编写一个将被另一种语言(matlab)调用的java包。 如果我的matlab进程结束,我希望Java进程继续运行。 每当matlab再次启动时,它应该能够与现有的运行进程通信。 所以我认为我需要让Java应用程序通过客户端/服务器模型中的套接字进行通信。 我设想有一套简单的function: startServer(主机,端口) runCommand(服务器,命令……) stopServer(主机,端口) 我之前从未做过这样的事情。 我是否以正确的方式思考它,或者是否有一种更简单的方法来构建可以独立于其父进程运行的应用程序? 这样做的最佳现代方式是什么(例如,有没有好的Apache软件包)? 任何人都可以提供一个简单的演示或指向我通过套接字与进程通信的教程吗? [编辑]为了澄清一下,matlab能够实例化一个java对象并在其自身中运行java代码。 因此,matlab中的startServer()函数将运行java代码,该代码将检查java进程是否已在该端口上运行,如果没有,则启动服务器进程。 我并不依赖于使用套接字(如果不是很明显,我主要是一个matlab开发人员),所以如果有更简单的东西,我就是为了它。 我只需要能够独立于matlab运行,但让matlab控制这些进程(通过java)。

如何测试使用JavaScript开发的WebSocket

我创建了WebSocket.js,但遗憾的是由于数据不可用,我无法测试它。 要求是来自各种来源的数据,所以我有多个sockets。 注意:我想特别测试我的socket.onMessage表现为不同的套接字。 请在下面找到代码段: var webSocket; var txQueue = []; var defaultReconnectTimeout = 1000; //will be multiplied by 2 and saved into reconnectTimeout on each try var reconnectTimeout = defaultReconnectTimeout; var registerWebSocketHandlers = function(webSocket) { webSocket.onclose = function(){ setTimeout(service.reopen, reconnectTimeout *= 2); }; webSocket.onopen = function(e) { reconnectTimeout = defaultReconnectTimeout; //reset this deferredSend(); }; webSocket.onerror […]

为什么我的Java服务器关闭套接字?

我有服务器和客户端。 我的服务器接受所有连接并返回客户端字符串。 但是当我试图发送更多的线时,它会崩溃 java.net.SocketException: Socket is closed at java.net.Socket.getOutputStream(Unknown Source) at server.ServerCore.hiMsg(ServerCore.java:67) at server.ServerCore.run(ServerCore.java:49) 这是我的服务器代码: package server; import java.io.File; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.*; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author pisio */ public class ServerCore extends Thread { private LoadSettings loadSettings = LoadSettings.Init(); private int port […]

Erlang服务器,Java客户端 – TCP消息被拆分?

正如标题所说,我有一个用Erlang编写的服务器,一个用Java编写的客户端,他们通过TCP进行通信。 我面临的问题是gen_tcp:recv显然不知道何时收到来自客户端的“完整”消息,因此在多个消息中“拆分”它。 这是我正在做的一个例子(不完整的代码,试图只将其保留到相关部分): 码 Erlang服务器 -module(server). -export([start/1]). -define(TCP_OPTIONS, [list, {packet, 0}, {active, false}, {reuseaddr, true}]. start(Port) -> {ok, ListenSocket} = gen_tcp:listen(Port, ?TCP_OPTIONS), accept(ListenSocket). accept(ListenSocket) -> {ok, Socket} = gen_tcp:accept(ListenSocket), spawn(fun() -> loop(Socket) end), accept(ListenSocket). loop(Socket) -> case gen_tcp:recv(Socket, 0) of {ok, Data} -> io:format(“Recieved: ~s~n”, [Data]), loop(Socket); {error, closed} -> ok end. Java客户端 public class […]

Java控制IP TTL?

在Java中,有没有办法控制套接字上发送的数据包的IP头的TTL?

Java中的getHostAddress()和getInetAddress()

我正在创建TCP套接字应用程序。 在服务器端, ss = new ServerSocket(10000); Socket socket = ss.accept(); String remoteIp = socket.getInetAddress().getHostAddress(); String RemotePort = “:”+socket.getLocalPort(); 我对最后两行有点困惑,getInetAddress()用于返回socket连接的地址,即主机的地址? 然后我们为什么需要一个getHostAddress()?