Socket服务器问题 Socket做服务器时 怎么同时和多个客户端通信,或只对应指定IP的客户端通信?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把创建的SOCKET对象 写人HASHMAP中 可以吗?? 关键就是服务器给客户端发 信息时指定客户端我用的发送语句是这样的 //接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接 socket=serverSocket.accept(); executorService.execute(new Handler(socket)); System.out.println("*-*-*-*-*-*-*-*-*-* 2 *-*-*-*-*-*-*-*-*-*"); OutputStream os=socket.getOutputStream(); os.write(v); os.flush(); 怎么修改呢? new Handler(socket) 是自己定义的线程吧? 那你后面还要来干麻?直接交给线程去处理就好了! public class InnerService implements Runnable{ private Socket socket; public InnerService(Socket socket){ this.socket = socket; this.run(); } private PrintWriter getWriter(Socket socket) throws IOException{ if(socket==null) return null; OutputStream ops = socket.getOutputStream(); return new PrintWriter(ops,true); } private BufferedReader getReader(Socket socket) throws IOException{ if(socket==null) return null; InputStream reader = socket.getInputStream(); return new BufferedReader(new InputStreamReader(reader)); } public void run(){ try { TestBean tb ,senttb; PrintWriter pw = getWriter(socket); OutputStream out=socket.getOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(out); InputStream in=socket.getInputStream(); ObjectInputStream ois=new ObjectInputStream(in); try { while((tb = (TestBean)ois.readObject())!=null){ System.out.println(tb.getMsg()+" Thread hashCode :"+this.hashCode()); senttb=new TestBean(); senttb.setMsg("Normal Transport!receive:" +tb.getMsg()); if(tb.getMsg().equals("Msg")) { senttb.setMsg("Close"); System.out.println("Server: Receive Close Signal! Preper to close!"); socket.shutdownInput(); socket.shutdownOutput(); System.out.println("Server: Everything has been finished!"); break; }else oos.writeObject(senttb); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(socket!=null) socket.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }自己写的小程序, InnerService 就你哪个 Handler 这个哪里错了哦 有数据库的java文件怎么打包 java 可不可以做网站导航条 FomulaOne往Excel中写数据时,某单元格文本过长无法全部显示 请教关于Applet的两个问题!!! 请解释一下JButton事件的处理流程 急--一个java数据库方面的问题 初学java,简单问题,顺便请推荐java学习电子书!希望交流。 帮我看看这个客户端把----------------- 送你 200 分 高手帮帮忙 一个JAVA输出问题 java socket如何实现同步通信 前辈帮忙,谢谢!!!
socket=serverSocket.accept();
executorService.execute(new Handler(socket));
System.out.println("*-*-*-*-*-*-*-*-*-* 2 *-*-*-*-*-*-*-*-*-*");
OutputStream os=socket.getOutputStream();
os.write(v);
os.flush();
怎么修改呢?
private Socket socket;
public InnerService(Socket socket){
this.socket = socket;
this.run();
}
private PrintWriter getWriter(Socket socket) throws IOException{
if(socket==null) return null;
OutputStream ops = socket.getOutputStream();
return new PrintWriter(ops,true);
}
private BufferedReader getReader(Socket socket) throws IOException{
if(socket==null) return null;
InputStream reader = socket.getInputStream();
return new BufferedReader(new InputStreamReader(reader));
}
public void run(){
try {
TestBean tb ,senttb;
PrintWriter pw = getWriter(socket);
OutputStream out=socket.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(out);
InputStream in=socket.getInputStream();
ObjectInputStream ois=new ObjectInputStream(in);
try {
while((tb = (TestBean)ois.readObject())!=null){
System.out.println(tb.getMsg()+" Thread hashCode :"+this.hashCode());
senttb=new TestBean();
senttb.setMsg("Normal Transport!receive:" +tb.getMsg());
if(tb.getMsg().equals("Msg")) {
senttb.setMsg("Close");
System.out.println("Server: Receive Close Signal! Preper to close!");
socket.shutdownInput();
socket.shutdownOutput();
System.out.println("Server: Everything has been finished!");
break;
}else
oos.writeObject(senttb);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(socket!=null) socket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}自己写的小程序, InnerService 就你哪个 Handler