java tcp中客户端不能接收到服务器的信息! 20
首先说下我程序的基本实现及问题所在:两个图形界面(Server和Client,Client有两个按钮“链接”和“断开”)当Client“链接”时Server每隔五秒向Cl...
首先说下我程序的基本实现及问题所在:
两个图形界面(Server和Client,Client有两个按钮“链接”和“断开”)当Client“链接”时Server每隔五秒向Client发送系统时间信息。Client点击断开时,Client将字符“quit”传到服务器上,服务器接收到后将链接时长再发送给客户端,客户端显示出来。现在的问题是:服务器这边当客户端点击断开时接收到了“quit”,但是客户端却获取不了服务器发送的链接时长。代码如下希望那位大虾指点下:
客户端:
public void run(){ //线程正式"跑起来"
try{
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
out.write("quit"); //当点击断开触发器时,将字符"quit"发送给服务器
out.flush(); //刷新
System.out.println("断开成功!");
try{
System.out.println("这里应该有!");
if(in.ready()){
System.out.println("有没有执行获取程序!"); 这里就输出不了了,之前可以输出
String i=in.readLine();//将读取缓存的数据转化为字符串
p.setText(i); //将获得的in作为字符串打印在文本框内
System.out.println("断开显示的问题!");
}
}catch (Exception e) {
e.printStackTrace();
}
in.close(); //关闭in
out.close(); //关闭流out
s.close(); //关闭socket
}catch(Exception e){
e.printStackTrace();
}
服务器:服务器端都是可以输出的,应该没有任何问题!
while(true){
if(in.ready()){
System.out.println("接收quit的最开始!");
String strWord=in.readLine(); System.out.println("接收quit第二次!");
System.out.println(strWord);
if(strWord.equals("quit")){ /当捕获的字符串是"quit"时
long end = System.currentTimeMillis();//获取捕获"quit"数据时的时间
out.write("链接用时"+(end-start)+"毫秒"); //计算该客户链接的时间
System.out.println("链接用时"+(end-start)+"毫秒");
out.flush();
p.setText("客户端正常关闭!"); //打印客户的正常关闭
} 展开
两个图形界面(Server和Client,Client有两个按钮“链接”和“断开”)当Client“链接”时Server每隔五秒向Client发送系统时间信息。Client点击断开时,Client将字符“quit”传到服务器上,服务器接收到后将链接时长再发送给客户端,客户端显示出来。现在的问题是:服务器这边当客户端点击断开时接收到了“quit”,但是客户端却获取不了服务器发送的链接时长。代码如下希望那位大虾指点下:
客户端:
public void run(){ //线程正式"跑起来"
try{
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
out.write("quit"); //当点击断开触发器时,将字符"quit"发送给服务器
out.flush(); //刷新
System.out.println("断开成功!");
try{
System.out.println("这里应该有!");
if(in.ready()){
System.out.println("有没有执行获取程序!"); 这里就输出不了了,之前可以输出
String i=in.readLine();//将读取缓存的数据转化为字符串
p.setText(i); //将获得的in作为字符串打印在文本框内
System.out.println("断开显示的问题!");
}
}catch (Exception e) {
e.printStackTrace();
}
in.close(); //关闭in
out.close(); //关闭流out
s.close(); //关闭socket
}catch(Exception e){
e.printStackTrace();
}
服务器:服务器端都是可以输出的,应该没有任何问题!
while(true){
if(in.ready()){
System.out.println("接收quit的最开始!");
String strWord=in.readLine(); System.out.println("接收quit第二次!");
System.out.println(strWord);
if(strWord.equals("quit")){ /当捕获的字符串是"quit"时
long end = System.currentTimeMillis();//获取捕获"quit"数据时的时间
out.write("链接用时"+(end-start)+"毫秒"); //计算该客户链接的时间
System.out.println("链接用时"+(end-start)+"毫秒");
out.flush();
p.setText("客户端正常关闭!"); //打印客户的正常关闭
} 展开
Storm代理
2023-06-05 广告
2023-06-05 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
2017-11-13
展开全部
输入流InputStream 是否有数据,这样判断
int available()Returns an estimate of the number of bytes that can be read (or
skipped over) from this input stream without blocking by the next
invocation of a method for this input stream.
int available()Returns an estimate of the number of bytes that can be read (or
skipped over) from this input stream without blocking by the next
invocation of a method for this input stream.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在服务器端是先接受的吧 你应该把接受信息和发送信息放在两个不同的线程里面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询