一个Socket服务的例子! 请高手指点无法捕捉的输出如何修改?

本文提供了一个Socket服务的示例代码,包括服务端和客户端的实现。服务端通过指定端口监听连接请求,并发送系统信息作为响应;客户端则连接到指定主机及端口,接收并显示服务端发送的信息。
导读:
  一个Socket服务的例子!
  请高手指点无法捕捉的输出如何修改?
  //服务端
  package org.dyol.net;
  import java.net.*;
  import java.io.*;
  import java.util.*;
  public class Console {
  
  public static void main(String args[]){
  if (args.length!=1)
  throw new IllegalArgumentException("unlawful number of args:\nUSER:\n\tConsole \n");
  new Console(Integer.parseInt(args[0]));
  }
  
  public Console(int port){
  this.port = port;
  try {
  ServerSocket socket = new ServerSocket(port);
  System.out.println("Start service on "+port);
  while(true){
  new Transmit(socket.accept()).start();
  }
  }catch (IOException e){}
  }
  
  private class Transmit extends Thread {
  private String sys = System.getProperty("os.name")+" "+System.getProperty("os.arch")+" "+System.getProperty("os.version");
  private Socket sock;
  public Transmit(Socket sock){
  this.sock = sock;
  try {
  input = new BufferedReader(new InputStreamReader(sock.getInputStream(),"gb2312"));
  output = new PrintStream(sock.getOutputStream());
  output.println(sys);
  }catch(Exception e){}
  }
  public void run(){
  System.out.println("");
  }
  }
  
  private int port = 520;
  private BufferedReader input;
  private PrintStream output;
  private String cmd;
  private Process proc;
  private String msg;
  private BufferedReader dis ;
  
  }
  //客户端
  import java.io.*;
  import java.net.*;
  public class Client {
  public static void main(String[] args){
  if (args.length != 2)
  throw new IllegalArgumentException("Wrong number of args");
  String host = args[0];
  int port = Integer.parseInt(args[1]);
  new Client(host, port);
  }
  public Client(String host,int port){
  try {
  Socket s = new Socket(host, port);
  final BufferedReader echo=new BufferedReader(new InputStreamReader(s.getInputStream(),"gb2312"));
  PrintWriter ps = new PrintWriter(s.getOutputStream());
  BufferedReader cmd = new BufferedReader(new InputStreamReader(System.in,"gb2312"));
  final PrintWriter pis = new PrintWriter(System.out, true);
  pis.println("Connected to "+s.getInetAddress()+":" + s.getPort());
  Thread t = new Thread() {
  public void run() {
  char[] buffer = new char[1024];
  int ch;
  try {
  while((ch = echo.read(buffer)) != -1) {
  for(int i = 0; i <ch i>  if (buffer[i] == '\n') pis.println(); <br>  else pis.print(buffer[i]); <br>  } <br>  pis.flush(); <br>  } <br>  }catch (IOException e){ <br>  pis.println(e); <br>  } <br>  pis.println("Connection closed by server."); <br>  System.exit(0); <br>  } <br>  }; <br>  t.setPriority(Thread.currentThread().getPriority() + 1); <br>  t.start(); <br>  String line; <br>  while((line = cmd.readLine()) != null) { <br>  ps.print(line + "\n"); <br>  ps.flush(); <br>  } <br>  s.close(); <br>  pis.println("Connection closed by client."); <br>  System.exit(0); <br>  }catch (Exception e) {} <br>  } <br>  } <br>   <br>  一个Socket服务的例子! 请高手指点无法捕捉的输出如何修改? //服务端 package org.dyol.net; import java.net.*; import java.io.*; import java.util.*; public class Console { public static void main(String args[]){ if (args.length!=1) throw new IllegalArgumentException("unlawful number of args:\nUSER:\n\tConsole \n"); new Console(Integer.parseInt(args[0])); } public Console(int port){ this.port = port; try { ServerSocket socket = new ServerSocket(port); System.out.println("Start service on "+port); while(true){ new Transmit(socket.accept()).start(); } }catch (IOException e){} } private class Transmit extends Thread { private String sys = System.getProperty("os.name")+" "+System.getProperty("os.arch")+" "+System.getProperty("os.version"); private Socket sock; public Transmit(Socket sock){ this.sock = sock; try { input = new BufferedReader(new InputStreamReader(sock.getInputStream(),"gb2312")); output = new PrintStream(sock.getOutputStream()); output.println(sys); }catch(Exception e){} } public void run(){ System.out.println(""); } } private int port = 520; private BufferedReader input; private PrintStream output; private String cmd; private Process proc; private String msg; private BufferedReader dis ;} //客户端 import java.io.*; import java.net.*; public class Client { public static void main(String[] args){ if (args.length != 2) throw new IllegalArgumentException("Wrong number of args"); String host = args[0]; int port = Integer.parseInt(args[1]); new Client(host, port); } public Client(String host,int port){ try { Socket s = new Socket(host, port); final BufferedReader echo=new BufferedReader(new InputStreamReader(s.getInputStream(),"gb2312")); PrintWriter ps = new PrintWriter(s.getOutputStream()); BufferedReader cmd = new BufferedReader(new InputStreamReader(System.in,"gb2312")); final PrintWriter pis = new PrintWriter(System.out, true); pis.println("Connected to "+s.getInetAddress()+":" + s.getPort()); Thread t = new Thread() { public void run() { char[] buffer = new char[1024]; int ch; try { while((ch = echo.read(buffer)) != -1) { for(int i = 0; i <ch e i system.exit client. by closed pis.println s.close ps.flush ps.print while line string t.start t.setpriority server. pis.flush pis.print else if><br>本文转自 <br><a href="http://www.cn-java.com/www1/?action-viewnews-itemid-2717">http://www.cn-java.com/www1/?action-viewnews-itemid-2717</a></ch></ch>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值