我会更好地解释我的问题,我会为我糟糕的英语道歉。我在练习java。net包(这是我下一次大学考试的论据),我正试图更好地控制客户端和服务器设备之间的通信。更准确地说,在调用close()方法到相关套接字之前,我尝试使用TCP连接在3个不同的时间内从服务器向客户端发送3个不同的字符串。我发现我的剧本没有我想象的那么好用。在客户端,我接收所有3个字符串,但只有在我关闭套接字时才接收。相反,我希望在将这3条消息放入服务器的输出流后立即接收它们。我将发布服务器脚本的代码。
在批评我之前,我在写一个新的问题之前读了这个问题,但它并没有解决我的问题。下面的脚本是线程的run()方法的主体,它管理我在服务器端的连接。
try{
//Dormi per un pò..
System.out.println("Il Client con ip "+ind+" ed associato all' Handler #"+id+" è in attesa");
Thread.sleep(5000);
PrintWriter pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
pw.println("Hi "+ind); //ind is the InetAddress of the connected client
pw.flush();
Thread.sleep(5000);
pw.write("what's up?\n");
pw.flush();
Thread.sleep(5000);
pw.write("I gotta go. Bye\n");
pw.flush();
pw.close();
s.close();
System.out.println("Il Client associato all'Handler #"+id+" si è disconnesso");
}catch(Exception e){
e.printStackTrace();
}
以下是客户端代码:
package socket;
import java.net.*;
import java.io.*;
public class MultiThreadClient extends Thread{
private byte[] address={(byte) 192, (byte)168, (byte) 1, (byte)15};
private int destPort=2000;
public MultiThreadClient(){
super();
}
public void run(){
try{
InetAddress ip=InetAddress.getByAddress(address);
Socket s=new Socket(ip,destPort);
s.setReuseAddress(true);
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
String message1=br.readLine();
String message2=br.readLine();
String message3=br.readLine();
System.out.println(message1);
System.out.println(message2);
System.out.println(message3);
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[]args){
//for(int i=0;i<3;i++){
MultiThreadClient mtc=new MultiThreadClient();
mtc.start();
// }
}
}
你的代码运行得很好——你只需在readLine
方法上阻塞3次,然后打印你的响应(此时服务器端的套接字关闭)。
试试这个:
String message1 = br.readLine();
System.out.println(message1);
String message2 = br.readLine();
System.out.println(message2);
String message3 = br.readLine();
System.out.println(message3);
我的另一个提示是在最后的代码块中进行清理。
try { ... }
catch { ... }
finally {
s.close();
}
这样即使抛出异常,也会清理资源。
问题内容: 所以我正在使用node.js和socket.io。我有这个小程序,它接受文本框的内容并将其发送到node.js服务器。然后,服务器将其中继回其他连接的客户端。有点像聊天服务,但不完全是。 无论如何,如果用户键入价值2-10k的文本并尝试发送该文本,该怎么办?我知道我可以自己尝试一下,但是我正在寻找一个实用的最佳实践限制,即我可以通过一次发射处理多少数据。 问题答案: Node和sock
我正在向我的远程服务器发送以将其存储在文件系统中。为此,我使用Java协议。为了避免网络带宽和TCP输入/输出缓冲内存,我以压缩格式发送数据。但是,我无法解压缩从客户端收到的数据。我得到了ZLIB输入流的异常。这是因为服务器正在接收。 Java代码 客户 服务器 有没有办法在Socket中以GZIP压缩格式发送数据?
问题内容: 我被困住了:我试图使用AJAX提交表单,但是我找不到通过我的AJAX调用发送多个数据字段的方法。 我尝试了各种东西: 甚至是出于测试目的的东西: 但是无论我怎样尝试,我的SQL都一无所获。 那么,在我的AJAX调用中放入更多行数据的正确语法是什么? 问题答案: 正确的语法是: 如此处指定:http : //api.jquery.com/jQuery.ajax/ 因此,如果这不起作用,我
我创建了某种类型的客户机/服务器应用程序,它有自己的数据ACK系统。由于某些限制,它最初是用TCP编写的,但它的基础是考虑到UDP编写的。 我发送到服务器的数据包有自己的封装(数据包id和数据包大小报头。我知道UDP还有一个校验和,所以我没有为此添加报头),但是TCP是如何工作的,我知道服务器可能接收不到整个数据包,所以我收集并缓冲了接收到的数据,直到收到一个完整的有效数据包。 我想知道的是:如果
问题内容: 我有一个内置的javascript,它可以执行以下操作:通过ajax-> php-> sql获取内容,并在单击内容后在index.php上显示它,将显示新内容。 现在,我想拥有一个在将内容单击到php之后发送数据的函数,该函数将在db中执行某些操作。如何创建将发送数据的功能?谢谢! 这是我的显示内容的代码: }); }` 问题答案: 您可以通过在jQuery.ajax 设置中包含值,将