客户端使用C 写的,,,服务器端用java 这样写怎么得不到值???

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

public class UserStateManage extends Thread {
 Object hashLock = new Object();
 // 当前的连接数和工作线程数
 static int workThreadNum = 0;
 static int socketConnect = 0;
 private ServerSocket serverSocket;
 // 服务器IP
 private String host = "192.168.0.106";// 61.148.200.226
 // 服务器端口
 private int stateReportPort = 9003;
 String endFlag = "</protocol>";
 CharSequence csEndFlag = endFlag.subSequence(0, 10);
 // 扫描间隔
 private int scanTime = 10000;

 @Override
 public void run() {
  // 绑定端口,并开始侦听用户的心跳包
  serverSocket = startListenUserReport(stateReportPort);
  if (serverSocket == null) {
   System.out.println("【创建ServerSocket失败!】");
   return;
  }
  // 等待用户心跳包请求
  while (true) {
   Socket socket = null;
   try {
    socketConnect = socketConnect + 1;
    // 接收客户端的连接
    socket = serverSocket.accept();
    // 为该连接创建一个工作线程
    Thread workThread = new Thread(new Handler(socket));
    // 启动工作线程
    workThread.start();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

 class Handler implements Runnable {
  private Socket socket;

  public Handler(Socket socket) {
   // 传一个socket进来
   this.socket = socket;
  }

  private PrintWriter getWriter(Socket socket) throws IOException {
   OutputStream socketOut = socket.getOutputStream();
   return new PrintWriter(socketOut, true);
  }

  private BufferedReader getReader(Socket socket) throws IOException {
   InputStream socketIn = socket.getInputStream();
   return new BufferedReader(new InputStreamReader(socketIn));
  }

  public String echo(String msg) {
   return "echo:" + msg;
  }

  public void run() {
   // 线程池中execute()就执行这个方法
   try {
    System.out.println("New connection accepted "
      + socket.getInetAddress() + ":" + socket.getPort());
    BufferedReader br = getReader(socket);// 获取输入流
    System.out.println("Client:" + br.readLine());
    PrintWriter pw = getWriter(socket);// 获取输出流
    BufferedReader sin = new BufferedReader(new InputStreamReader(
      System.in));
    String msg = null;
    msg = sin.readLine();
    while (msg != null) {
     // 读输入流
     pw.println(msg);
     pw.flush();
     System.out.println("Server:" + msg);
     System.out.println("Client:" + br.readLine());
     msg = sin.readLine();
     if (msg.equals("bye"))
      break;
    }
   } catch (IOException e) {
    e.printStackTrace();
   } finally {

    try {
     if (socket != null)
      socket.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }

 /**
  * 创建一个ServerSocket来侦听用户心跳包请求
  *
  * @param port
  *            指定的服务器端的端口
  * @return 返回ServerSocket
  * @author dream
  */
 public ServerSocket startListenUserReport(int port) {
  try {
   ServerSocket serverSocket = new ServerSocket();

   if (!serverSocket.getReuseAddress()) {
    serverSocket.setReuseAddress(true);
   }
   serverSocket.bind(new InetSocketAddress(host, port));
   System.out.println("【开始在" + serverSocket.getLocalSocketAddress()
     + "上侦听用户的心跳包请求!】");
   return serverSocket;
  } catch (IOException e) {
   System.out.println("【端口" + port + "已经被占用!】");
   if (serverSocket != null) {
    if (!serverSocket.isClosed()) {
     try {
      serverSocket.close();
     } catch (IOException e1) {
      e1.printStackTrace();
     }
    }
   }
  }
  return serverSocket;
 }

 /**
  * 从指定的socket中得到输入流
  *
  * @param socket
  *            指定的socket
  * @return 返回BufferedReader
  * @author dream
  */

 public Object getHashLock() {
  return hashLock;
 }

 public void setHashLock(Object hashLock) {
  this.hashLock = hashLock;
 }

 public String getHost() {
  return host;
 }

 public void setHost(String host) {
  this.host = host;
 }

 public int getStateReportPort() {
  return stateReportPort;
 }

 public void setStateReportPort(int stateReportPort) {
  this.stateReportPort = stateReportPort;
 }

 public String getEndFlag() {
  return endFlag;
 }

 public void setEndFlag(String endFlag) {
  this.endFlag = endFlag;
 }

 public int getScanTime() {
  return scanTime;
 }

 public void setScanTime(int scanTime) {
  this.scanTime = scanTime;
 }

 public static int getWorkThreadNum() {
  return workThreadNum;
 }

 public static int getSocketConnect() {
  return socketConnect;
 }

 // 测试本函数的main函数
 public static void main(String arg[]) {
  UserStateManage usm = new UserStateManage();
  usm.start();
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值