TCP客户端程序的编写

来源:互联网 发布:银行家算法经典例题 编辑:程序博客网 时间:2024/05/16 05:43

这里写图片描述

实现代码:
ReverseServer.java文件代码:

import java.net.*;public class ReverseServer {   public static void main(String[] args) {      // TODO Auto-generated method stub      ServerSocket ss = null;      try {         if (args.length < 1) {               //if和else用于解决端口冲突,如果运行时没有输入参数则为8001            ss = new ServerSocket(8001);     //若果运行时指定了参数,则参数为端口号(如:8002)         }         else {            ss = new ServerSocket(Integer.parseInt(args[0]));         }         boolean bRunning = true;         while (bRunning) {            Socket s = ss.accept();            new Thread(new Servicer(s)).start();         }         ss.close();      } catch (Exception e) {         // TODO: handle exception         e.printStackTrace();      }   }}

Servicer.java文件代码:

import java.net.*;import java.io.*;public class Servicer implements Runnable {   private Socket s = null;   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));         PrintWriter pw = new PrintWriter(ops,true);         while (true) {            String strLine = br.readLine();            if(strLine.equalsIgnoreCase("quit"))            {               break;            }System.out.println(strLine + ":" + strLine.length());            String strEcho = (new StringBuffer(strLine).reverse()).toString();            pw.println(strLine + "-->" + strEcho);         }         br.close();         pw.close();         s.close();      } catch (Exception e) {         // TODO: handle exception         e.printStackTrace();      }   }}

TcpClient.java文件代码:

import java.net.*;import java.io.*;public class TcpClient {   public static void main(String[] args) throws Exception{      // TODO Auto-generated method stub      if (args.length < 2) {         System.out.println("Usage:javaTcpClient ServerIP ServerPort");         return;      }      Socket s = new Socket(args[0],Integer.parseInt(args[1]));      InputStream ips = s.getInputStream();      OutputStream ops = s.getOutputStream();      BufferedReader brNet = new BufferedReader(            new InputStreamReader(ips));      PrintWriter pw = new PrintWriter(ops,true);      BufferedReader brKeyBoard = new BufferedReader(            new InputStreamReader(System.in));      while(true)      {         String strWord = brKeyBoard.readLine();         pw.println(strWord);         if (strWord.equalsIgnoreCase("quit")) {            break;         }         System.out.println(brNet.readLine());      }      pw.close();      brNet.close();      brKeyBoard.close();      s.close();   }}

运行结果:
先在Eclipse配置开始要输入给args数组的参数:

这里写图片描述

先运行ReverseServer之后再运行TcpClient:
TcpClient运行之后键盘输入结果和返回结果:

这里写图片描述

ReverseServer在TcpClient发送数据后收到的结果:

这里写图片描述

2 0
原创粉丝点击