我写了两个Socket程序,客户端代码是:
import java.net.*;
import java.io.*;
public class Cli { public static void main(String[] args) {
try
{
Socket so=new Socket("127.0.0.1",3721);
BufferedReader buf=new BufferedReader(new InputStreamReader(so.getInputStream()));
PrintWriter buw=new PrintWriter(so.getOutputStream());
buw.println("哈哈o(∩_∩)o...哈哈");
}
catch(Exception e)
{}
}}
服务器端代码是:
import java.io.*;
import java.net.*;
public class Cc
{ public static void main(String[] args)
{
try
{
ServerSocket server=new ServerSocket(3721);
Socket s1=server.accept();
BufferedReader buf=new BufferedReader(new InputStreamReader(s1.getInputStream()));
System.out.print("记号");
String s=buf.readLine();
System.out.print(s);
s1.close();
buf.close();
}
catch(Exception e)
{
System.out.print("出现异常");
e.getMessage();
}
}}我运行的时候服务器端会显示“记号出现异常”,我把System.out.print("记号");这一句写到String s=buf.readLine();之后,运行就只会显示出现异常,这是怎么一回事,有人说在客户端的 BufferedReader buf=new BufferedReader(new InputStreamReader(so.getInputStream())); 和服务器端的 BufferedReader buf=new BufferedReader(new InputStreamReader(s1.getInputStream()));
,同时在客户端和服务器端去获得输入流,这个时候就会发生阻塞。。
请大家帮帮忙
import java.net.*;
import java.io.*;
public class Cli { public static void main(String[] args) {
try
{
Socket so=new Socket("127.0.0.1",3721);
BufferedReader buf=new BufferedReader(new InputStreamReader(so.getInputStream()));
PrintWriter buw=new PrintWriter(so.getOutputStream());
buw.println("哈哈o(∩_∩)o...哈哈");
}
catch(Exception e)
{}
}}
服务器端代码是:
import java.io.*;
import java.net.*;
public class Cc
{ public static void main(String[] args)
{
try
{
ServerSocket server=new ServerSocket(3721);
Socket s1=server.accept();
BufferedReader buf=new BufferedReader(new InputStreamReader(s1.getInputStream()));
System.out.print("记号");
String s=buf.readLine();
System.out.print(s);
s1.close();
buf.close();
}
catch(Exception e)
{
System.out.print("出现异常");
e.getMessage();
}
}}我运行的时候服务器端会显示“记号出现异常”,我把System.out.print("记号");这一句写到String s=buf.readLine();之后,运行就只会显示出现异常,这是怎么一回事,有人说在客户端的 BufferedReader buf=new BufferedReader(new InputStreamReader(so.getInputStream())); 和服务器端的 BufferedReader buf=new BufferedReader(new InputStreamReader(s1.getInputStream()));
,同时在客户端和服务器端去获得输入流,这个时候就会发生阻塞。。
请大家帮帮忙
解决方案 »
- POI导出百万条数据到Excel,要怎么弄啊?急~!!!急~!!!
- 求助:在JAVA applet我想从网上引用一个图片为什么老报错
- J2SE中关于接口的问题
- .class文件在当前目录中,为什么noclassdeffoundererr
- 为什么右键没起作用!右键点不出来....
- 20分~求Think in java 第3版习题答案~!
- 关于String类的小问题!
- 关于JAVA的 random()函数?
- <thinking in java 2>的下载那里有?
- 到场的各位,你们好:有时用jbuilder6的吗?我想聆听你们的编程经验点滴!还请不吝赐教!
- 请求帮助......JAVA学习......会很感激你的,......
- JAVA中的编码
你在这一句时:
String s=buf.readLine();
才发生阻塞的,因为readLine()这个方法是阻塞的
还有,发生异常你直接捕获Exception而不打印异常信息,无法知道是什么异常,在哪发生的
这样没办法解决啊
so.close();
PrintWriter buw=new PrintWriter(so.getOutputStream());
改成
PrintWriter buw=new PrintWriter(so.getOutputStream(),true);
具体的自己去看下PrintWrite的用法
buw.flush();
so.close()异常的原因是服务器在等待客户端传送数据时,你的客户端异常退出