Tag: serversocket

如何使用Java向所有线程客户端发送数据?

我是Java的新手,我正在尝试构建一个非常基本的Java Relay服务器,它将消息从客户端发送到所有连接的客户端。 我已经想出如何进行线程允许多个连接,但我无法弄清楚如何将传入的消息回显给所有连接的套接字线程。 这是我的Main.java源代码: http://pastebin.com/vVewfv3s 这是我的SocketThread.java源代码: http://pastebin.com/yHA2BcUi 基本上,我想知道当前编码设置的最简单方法是能够将传入消息从一个客户端发送到所有其他客户端。 我目前正在使用Windows telnet客户端作为使用此服务器的客户端。

从服务器套接字java中的客户端获取数据

我正在创建一个服务器应用程序,它执行以下任务 接受客户端的连接 处理每个客户端连接到单独的线程 从客户端接收数据 将数据发送到客户端 我能够连接客户端但无法从客户端接收数据 只有在客户端断开连接时才能在我的控制台中看到数据.. !!! 代码: – public class ServerListener { public static void main(String[] args) { new ServerListener().startServer(); } public void startServer() { final ExecutorService clientProcessingPool = Executors .newFixedThreadPool(10); Runnable serverTask = new Runnable() { @Override public void run() { try { ServerSocket serverSocket = new ServerSocket(8000); System.out.println(“Waiting for clients to […]

服务器套接字文件传输

我在java中使用了服务器套接字概念来传输图像和video等文件。 但是当我在客户端收到时,我正在自定义文件名。 我可以获得文件的原始名称吗? 例如: 如果来自服务器端的文件用于传输是“abc.txt”,我需要在客户端反映相同的名称(不单独传递名称)。 在服务器端: public class FileServer { public static void main (String [] args ) throws Exception { // create socket ServerSocket servsock = new ServerSocket(13267); while (true) { System.out.println(“Waiting…”); Socket sock = servsock.accept(); System.out.println(“Accepted connection : ” + sock); OutputStream os = sock.getOutputStream(); new FileServer().send(os); sock.close(); } } public void send(OutputStream […]

在Android设备之间传输文件?

我正在编写代码,我想将mp4文件发送到另一个Android设备。 我已经通过Wifi连接两个Androids并从一个简单的循环中写入1-20,而另一个Android设备读取并显示发送的号码。 这是“发件人”的有趣部分: InetAddress serverAddr = InetAddress.getByName(serverIpAddress); Log.d(“ClientActivity”, “C: Connecting…”); Socket socket = new Socket(serverAddr, port); connected = true; while (connected) { try { Log.d(“ClientActivity”, “C: Sending command.”); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket .getOutputStream())), true); for (int i = 1; i < 20; i++) { out.println(i); i=i++; 和“接收者”: serverSocket = new ServerSocket(SERVERPORT); // […]

Android中不安全的蓝牙连接

我被一位教授挑战,在Android上开发一个小型蓝牙演示应用程序。 直到两周前他给我这个挑战时,我对Android的开发一无所知。 我对Java编程也很陌生,所以我从远处开始。 但无论如何… 所以我做了大部分的教程,我读到了Android中的蓝牙,看了蓝牙聊天示例代码,我现在正在尝试做我的小应用程序。 因此,对于我的演示,我将尝试在我的真实手机和蓝牙鼠标之间建立连接。 我想在我的手机屏幕上移动一个形状以响应我的鼠标移动。 我遇到很多问题,但到目前为止我的主要问题是用不安全的鼠标打开一个sockets。 当我尝试使用listenUsingRfcommWithServiceRecord方法listenUsingRfcommWithServiceRecord ,它会将UUID作为参数。 但我的鼠标很可能没有UUID来响应,所以我猜这种方法并不好。 当我阅读有关此方法的文档时,它说要使用像鼠标这样的设备打开不安全的服务器套接字,我必须使用listenUsingInsecureRfcommWithServiceRecord方法。 但是当我调用它时,这个方法是不可用的,它以红色加下划线,而Eclipse表示它对于BluetoothAdapter类型是未定义的。 private BluetoothServerSocket connectDevice(BluetoothAdapter adapter, BluetoothDevice device){ BluetoothServerSocket socket = null; try{ socket = adapter.listenUsingInsecureRfcommWithServiceRecord(device.getName(), UUID.randomUUID()); } catch(IOException e){ Toast.makeText(this, “Connection failed.\n” + e.getMessage(), Toast.LENGTH_SHORT); } return socket; } 如果我做错了,请不要激怒我,这是我的第一个问题,我开始使用Java编程。

使用套接字通过TCP从服务器端向客户端发送ArrayList ?

我正在尝试通过TCP将一个对象从服务器端套接字发送到客户端套接字。 我无法找出问题所在。 这是我在客户端遇到的错误: java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280) at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749) at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779) at java.io.ObjectInputStream.(ObjectInputStream.java:279) at ClientSide.main(ClientSide.java:16) 服务器端代码: import java.io.*; import java.net.*; import java.util.ArrayList; public class ServerSide { public static void main(String[] args) { try { ServerSocket myServerSocket = new ServerSocket(9999); Socket skt = myServerSocket.accept(); ArrayList my = new ArrayList(); my.set(0,”Bernard”); my.set(1, “Grey”); try { ObjectOutputStream objectOutput = […]

firefox不支持Android Web服务器

我在Android中创建了一个绑定到端口2090的网络服务器并提供Android设备的SD卡,如果我在Internet Explorer中键入ip:port/index.htm然后它工作得很好但是当我在其他浏览器中打开它时它工作得很好它打开HTML文件作为文本请帮助我。 这是我的代码。 服务器启动器类: package dolphin.developers.com; import java.io.File; import java.io.IOException; import java.net.InetAddress; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.widget.Toast; import dolphin.devlopers.com.R; public class JHTTS extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.facebook); try{ File documentRootDirectory = new File (Environment.getExternalStorageDirectory().getAbsolutePath()+”/”); JHTTP j = new JHTTP(documentRootDirectory,2090); […]

尝试从输入流中检索文本时,应用程序挂起

情况 我一直在创建一个程序来在局域网中的两台计算机之间交换消息。 一台计算机将自己标识为服务器而另一台计算机标识为客户端。 启动时,如果用户希望作为客户端连接到该计算机,则必须输入另一台计算机的主机和端口。 它的工作原理设置非常基础:您键入消息,按Enter键,它会显示在您自己的屏幕上。 之后,您的对话伙伴必须单击按钮才能检索最新消息,并且它应显示在他的屏幕上。 这种情况一直持续到有人离开。 问题 程序正确启动并询问连接设置。 之后,我在两台计算机上启动连接,事情似乎很顺利(建立连接后,标签会显示您的状态,例如客户端或服务器,是(1))。 当我输入消息并发送消息时,事情继续正常,输出将被写入发送者的屏幕,并且不会发生意外行为。 当我想在另一台计算机上检索消息时,该程序完全冻结。 GUI中没有对象可单击,也不显示输出。 码 假设连接已正确建立(参见(1)),我将概述下面发送消息的过程,同时省略非必要部分。 GuiApplication.java private void sendMessage() { connection.sendMessage(message); showMessage(message); } Connection.java public void sendMessage(String message) { if (isClient()) { client.sendMessage(message); } else if (isServer()) { server.sendMessage(message); } } Client.java public void sendMessage(String message) { outbound = new PrintWriter(socket.getOutputStream(), true); // Defined outside […]

当命中JButton连接到服务器时,程序会冻结

我在java中使用TCP进行简单的1v1“私聊”。 目前,每当我使用JButtons时,我都会遇到问题。 这是我第一次尝试使用JButtons和ActionListeners,所以我不是100%肯定这里发生了什么。 我有两个单独的服务器和客户端项目。 要编译这些,它必须是两个单独的项目。 当我尝试按下按钮时出现问题A:启动服务器B:连接到服务器。 按钮冻结,就好像它处于推动状态一样。 在运行服务器并按下按钮时,要“取消”按钮,客户端必须尝试连接。 服务器向客户端发送MOTD,客户端应将其打印到文本窗口。 只有在服务器关闭后才打印出MOTD。 再次,不知道为什么 服务器代码: package net.valid4life.chat; import java.awt.Component; public class Chat implements ActionListener { private static final long serialVersionUID = 1L; private static JFrame mainFrame; private static JPanel contentPane; private static JTextArea chatWindow; private static JTextArea serverWindow; private static JTextField chatBox; private static JTextField portBox; private static […]

将数据包广播到不在java中工作的客户端

我有多个发送器配置为当它们接收从服务器通过本地端口5255发送的广播数据包时发回响应,远程端口5252包含字符串“AST show me \ 0”(如发送者手册中所述)。 这应该可以帮助我扫描本地网络中的所有发射器。 我已经实现了一个服务器端代码来广播该字符串消息,但是当我运行代码时,它在以下行代码中有一个错误: socket.receive(packet1); 我真的不知道我在这段代码中做错了什么或遗漏了什么。 任何帮助将不胜感激。 注意:如果有帮助:发射器的IP地址是192.168.40。*; 服务器IP地址为192.168.40.254。 提前致谢 !! 这是代码: package socket_test; import java.io.*; import java.net.*; public class Server_UDP_Broadcast { //@SuppressWarnings(“null”) public static void main(String[] args) { // TODO Auto-generated method stub DatagramSocket socket = null; try{ socket = new DatagramSocket(5255); socket.setSoTimeout(10000); String str = “AST show me\0”; byte[] buf […]