IO telnet 中文问题

秘恋气质美女 2007-07-22 10:09:14
下面是TcpServer类启动 Servicer 类,Servicer 类InputStream ips = s.getInputStream();和OutputStream ops = s.getOutputStream();进行输入输出。英文都没有问题就是中文不行。我把InputStream和OutputStream多次更改都不行。我是在命令行用 telnet 127.0.0.1 8001 做测试的。不知那位知道中文不行的原因。谢谢

*******************************************************************
package java9;

import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {

public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8001);
while (true) {
Socket s = ss.accept();
new Thread(new Servicer(s)).start();
}
} catch (Exception e) {
}
}
}

****************************************************************

package java9;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;

public class Servicer implements Runnable {
Socket s;

public Servicer(Socket s) {
this.s = s;
}

public void run() {
try {
InputStream ips = s.getInputStream();
OutputStream ops = s.getOutputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(ips));
DataOutputStream dos = new DataOutputStream(ops);

while (true) {
dos.writeBytes("welcome, please enter--中文出错:");
String strWord = br.readLine();
dos.writeBytes(strWord);

br.close();
dos.close();
s.close();
}

} catch (Exception e) {
e.printStackTrace();
}
}
}


...全文
214 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
秘恋气质美女 2007-07-24
  • 打赏
  • 举报
回复
谢谢指点
IhaveGotYou 2007-07-22
  • 打赏
  • 举报
回复
字符集转换一下就可以了,另外,你的循环中socket已关了,还在读写???
我把你的改了一点:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;


public class Servicer extends Thread {
Socket s;

public Servicer(Socket s) {
this.s = s;
}

public void run() {
try {
InputStream ips = s.getInputStream();
OutputStream ops = s.getOutputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(ips));
DataOutputStream dos = new DataOutputStream(ops);

while (!interrupted()) {
String str="welcome, please enter--中文出错:";
dos.write(str.getBytes("gbk"));
String strWord = br.readLine();
if(strWord==null || strWord.equals(""))
break;
dos.write(strWord.getBytes("gbk"));
}
s.close();
br.close();
dos.close();

} catch (Exception e) {
e.printStackTrace();
}

}
}

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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