请教一个服务器客户端的问题

zzzhangxl 2016-03-09 07:34:15

这个服务器端的我用命令窗口telnet正常,客户端可以收到服务器发来的”你想吃点啥?“但是发出去的信息服务器端无法收到!



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
*
* 网络套接字
*
*服务器端
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerDemo server=new ServerDemo();
server.start();
}
/**
* 用于等待客户的连接
* @throws IOException
*/
public void start() throws IOException{
ServerSocket ss=new ServerSocket(8000);
while(true){
System.out.println("等待客户端的连接....");
final Socket s=ss.accept();
/*
* 开始监听等待客户的连接,如果有客户连接,就获得客户的套接字(Socket)实例
*/
System.out.println("客户连接成功....");
/*
* 通信逻辑
*/

new Thread(){
public void run() {
try {
//代表客户端送来的信息
InputStream in=s.getInputStream();
//服务器向客户端发送的数据信息
OutputStream out=s.getOutputStream();
out.write("你想吃点啥?\n".getBytes());
out.flush();
BufferedReader buf=new BufferedReader(new InputStreamReader(in));
while(true){
String str=buf.readLine().trim();
System.out.println(str);
if(str.equals("cumian")){
out.write("没有!\n".getBytes());
out.flush();
}else if(str.equals("baozi")){
out.write("有!给你~~\n".getBytes());
out.flush();
break;
}else{
out.write("你说啥?\n".getBytes());
out.flush();
}
}
s.close();


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



};
}.start();

}
}
}



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

/**
* 实现步骤
* 1.创建一个Socket实例,连接服务器
* Socket s=new Socket("localhost","8000");
* 2.客户端需要s.getInputStream();连接于服务器,拿到服务器的数据
* s.getOutStream();用于连接服务器,输出到服务器的数据
* 3.需要用线程控制网络流
* 4.将Reader线程设置成后台线程
*
*/
public class ClientDemo {
public static void main(String[] args) {
try {
final Socket s=new Socket("localhost",8000);

System.out.println("连接成功....");

Thread reader=new Thread(){
@Override
public void run() {
try {
InputStreamReader in=new InputStreamReader(s.getInputStream());
BufferedReader read =new BufferedReader(in);
String str=null;
while(true){
str=read.readLine();
System.out.println(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
};
reader.setDaemon(true);
reader.start();
Thread writer=new Thread(){
@Override
public void run() {
Scanner sca=new Scanner(System.in);
String message=null;
try {
OutputStream out=s.getOutputStream();
//BufferedWriter write=new BufferedWriter(out);
while(true){
message=sca.nextLine();
if(message.equalsIgnoreCase("q")){
break;
}
out.write(message.getBytes());
out.flush();
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
};
writer.start();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
...全文
106 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,616

社区成员

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

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