使用字符流完成java socket编程

genguyige 2011-08-29 05:32:04
使用字节流输入输出流进行信息的传递是可以的

然后我用字符流输入输出却不可以 高手帮我看一下


/**
* socket编程的客户端
* */
public class Client1 {
public static void main(String[] args) throws UnknownHostException, IOException{
Socket socketServer = new Socket("localhost",8000);

//创建读取服务器端返回流的BufferedReader
BufferedReader in = new BufferedReader(new InputStreamReader(socketServer.getInputStream()));

String string = in.readLine();

System.out.println(string);

}
}


public class Server1 {
//服务端
public static void main(String[] args) throws IOException{
ServerSocket ss = new ServerSocket(8000);

Socket socket = ss.accept();

//Writer out = new OutputStreamWriter(socket.getOutputStream());
//PrintWriter pout = new PrintWriter(socket.getOutputStream());
pout.println("hello world");
}
}


...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
genguyige 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yuanxiao27 的回复:]

楼主 ,你 out.println("hello world");
后,服务器线程就结束了,客服端当然会出现这个异常了。
[/Quote]

额 你这个不能解释为什么用字节流可以而字符流不行的问题

楼上的楼上是正解 因为字符串缓冲池没有刷新所以导致了错误
疯狂的驴子 2011-08-29
  • 打赏
  • 举报
回复
楼主 ,你 out.println("hello world");
后,服务器线程就结束了,客服端当然会出现这个异常了。
若鱼1919 2011-08-29
  • 打赏
  • 举报
回复
服务端flush一下:out.flush();
genguyige 2011-08-29
  • 打赏
  • 举报
回复
报错是
Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at Client1.main(Client1.java:17)
genguyige 2011-08-29
  • 打赏
  • 举报
回复
恩 第二个代码是这样的,上面的代码是修改过后的,

import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
public class Server1 {

public static void main(String[] args) throws IOException{
ServerSocket ss = new ServerSocket(8000);

Socket socket = ss.accept();

Writer out = new OutputStreamWriter(socket.getOutputStream());
//PrintWriter pout = new PrintWriter(socket.getOutputStream());
out.println("hello world");
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧