Tag: 套接字

连接被拒绝java中的套接字编程错误

我正在尝试执行的代码片段是使用jFileChooser选择一个文件并检索,将该数据写入Socket。 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { File selectedFile; FileReader reader = null; BufferedReader in; try { final JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); txtSearch.setText((fc.showOpenDialog(CreateNode.this) == JFileChooser.APPROVE_OPTION) ? fc.getSelectedFile().toString() : txtSearch.getText()); if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { //gets file from dialog selectedFile = fc.getSelectedFile(); //makes sure files can be processed before proceeding if (selectedFile.canRead() && selectedFile.exists()) { […]

是否有可能让sockets保持无限时间

我是网络编程的新手。 我感兴趣的是可以通过Java服务器和C客户端之间的套接字建立网络连接并保持连接无限打开吗? 我想保持连接打开以在客户端之间交换XML数据。

Java TCP服务器无法从多个客户端接收消息

我想做最简单的解释。 我的Java TCP项目有一个服务器和三个客户端。 服务器有一个ClientThread。 每个客户端都有一个ServerThread和一个UserThread。 工作流程是: 1.客户端的UserThread(例如,client_0)获取用户输入,然后向服务器发送消息。 2.服务器的ClientThread从client_0捕获消息,并将另一条消息发送到另一个客户端(例如client_1)的ServerThread。 3.然后client_1的ServerThread将另一条消息发送回服务器中运行的ClientThread; 步骤3的消息未到达服务器。 总共有3个客户端,比如client_0,client_1和client_2。 最初的想法是,如果client_0请求服务器,则服务器与client_1和client_2通信。 这就是为什么行if(i==cid) continue; 在服务器的for循环中。 但是,如果我注释掉这一行,服务器会与client_0进行通信(这在语义上是不必要的),并且不会发生消息传递问题。 之后,服务器与client_1进行通信,然后再次出现问题。 服务器可以从客户端(client_0)的ServerThread接收消息,该消息从其UserThread发送原始请求( msgToServer.println(“get list”); )以启动整个过程。 但是服务器无法从任何其他客户端的ServerThread获取消息,即使它可以向其他客户端发送消息,并且所有客户端程序都是相同的,并且所有ServerThreads和UserThreads都应该起作用。 怎么可能呢? 服务器: package serverftp; import java.io.*; import java.net.*; public class ServerFTP { static String[] id = {“cp 1″,”cp 2″,”cp 3”}; static String[] pass = {“123″,”456″,”789”}; static BufferedReader[] msgFromClient = new BufferedReader[3]; static PrintWriter[] […]

用于与IRC服务器通信的Java套接字

我正在学习Java,想要创建自己的IRC客户端。 我有两个线程,但问题是我并不总是从服务器得到响应(看不到PING)并且它滞后于我的消息被传递。 我认为这与线程没有睡眠有关,但事实certificate并非如此。 当我连接到服务器时,我发送以下命令来识别我自己和privatemsg self: USER me * 8 : hi NICK mynick 我也不确定我的线程使用是否正确。 我用过的代码: import java.io.*; import java.net.*; import java.util.logging.Level; import java.util.logging.Logger; public class f_irc { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { Socket ircSocket = null; BufferedWriter out = null; BufferedReader in = […]

使用socket java无法在send文件中获取接收文件循环

我正在开发客户端 – 服务器应用程序 从客户端,我将文件发送到服务器。 这是我在服务器上读取文件的代码: private void readfile() throws Exception{ String filename=”data.xml”; FileOutputStream fos = new FileOutputStream(filename); BufferedOutputStream out = new BufferedOutputStream(fos); BufferedReader buff_read = new BufferedReader(new InputStreamReader(input,”UTF-8″)); byte[] buffer=new byte[1024]; String line; int count; while((count=input.read(buffer))>0){ fos.write(buffer,0,count); fos.flush(); } System.out.println(“het”); fos.close(); } 但我无法摆脱while循环。 字符串“het”nerver在控制台屏幕显示,而我可以通过记事本++读取文件data.xml意味着文件发送成功。 你能帮我解决这个问题吗? 对不起我可怜的英格利斯。

Java套接字 – 自定义对象发送

我创建了工作套接字,当我尝试发送文本或数字时,它确定,但是当我尝试发送我的自定义类对象时,我得到了NullPointerException …这是一些代码: public boolean SendLi(List list) { try { out.writeObject(list); } catch (IOException e) { e.printStackTrace(); System.err.println(“Send: Error on OutputStream.write(byte[])”); } return true; } public List RecvLi() { List data; data = new ArrayList(); try{ data = (List) in.readObject(); } catch (IOException e) { System.err.println(“Send: Error on OutputStream.read(byte[]) – IOException”); return null; } catch (ClassNotFoundException […]

Client Socket无法连接到正在运行的Socket服务器

我有Android客户端应用程序使用Socket与服务器通信。 在我的开发机器上, SocketServer (服务器也用Java编写)正在端口8666侦听127.0.1.1 。 我还在Android应用的应用清单中添加了互联网访问权限。 但是当我尝试使用client = new Socket(“127.0.1.1”,8666)实例化Socket对象时,它会IOException带有connection refused消息的IOException (也尝试使用localhost而不是手动提供IP地址,但它不能正常工作)。 虽然我可以从简单的控制台Java程序轻松连接到服务器。 这可能有什么问题? 更新 我在某些方面的问题与此有关 。 我试图访问在运行模拟器的机器中运行的服务器。 注意:我知道不建议在任何Activity类中执行网络IO,我也不这样做,上面的代码只是一个简化的问题。

通过套接字读取和写入字节数据包

我想通过Socket将Android设备连接到外部设备。 套接字成功连接外部设备。 现在,如果有任何数据需要外部设备,则将字节数据包数据的请求发送到订单下的套接字。 如果外部设备接收数据正确,则发送字节数据作为响应。 参数:methodname(1字节),payloadlength(2字节),payload(2字节)。 现在我的代码是…… Socket socket = new Socket(“local exteranl device ip”, 5000); if(socket.isConnected()) { int methodname = 5; int payload = 2151; int payloadLength = 2; ByteBuffer buffer = ByteBuffer.allocate(3 + payloadLength); // 3 = for method name + length buffer.order(ByteOrder.BIG_ENDIAN); // Just to be explicit buffer.put((byte) methodname); buffer.putShort((short) payloadLength); buffer.putShort((short) payload); […]

Python套接字从Java PrintWriter套接字接收不完整的消息

我创建了一个python“队列”(类似于JMS协议),它将从两个Java客户端收到问题。 python-server将从其中一个Java客户端接收消息,第二个将读取问题并发布答案。 连接和消息传递工作,当Java客户端使用长度很长的String进行应答时,就会出现问题。 python收到的响应不完整! 更糟糕的是,消息被剪切为一定数量的字符并且始终保持相同的长度,但是,如果其他人托管服务器,则该数字是不同的。 (即:friend1托管服务器,friend2发送响应,收到长度:1380chars.Friend2托管服务器,friend1发布答案,收到长度:1431chars)这是服务器端python代码: s = socket.socket() host = socket.gethostname() # host = “192.168.0.20” port = 12345 s.bind((host, port)) s.listen(5) while True: c, addr = s.accept() # print ‘Got connection from’, addr message = c.recv(8192) #Is this length a problem? # print message message = message.strip() ipAddress = addr[0] 我在这里阅读StackOverflow上的问题,c.recv()应该没有大量字节的问题,我们的响应接近1500个字符。 这是java客户端: private void […]

序列化JFrame并通过网络发送

我想要做的是通过套接字发送JFrame。 问题是在我发送表单并按下按钮查看后,我得到以下exception。 package ds3; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; public class SerializationApp extends JFrame { private DataForm dataForm = new DataForm(); private int serverPort = 15000; private ServerSocket serverSocket; public SerializationApp() { try { serverSocket = new ServerSocket(serverPort); initComponents(); new Thread(new Runnable() { @Override […]