客户端使用C 写的,,,服务器端用java 这样写怎么得不到值???
2013-10-09 09:40
337 查看
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();
}
}
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();
}
}
相关文章推荐
- 使用Struts 2将客户端JSON数据映射为服务器端Java对象
- 在Java中使用HttpURLConnection发送http客户端请求、服务器端返回信息、接受服务器端的信息
- Java中使用Socket实现服务器端和客户端通讯
- Java中使用Socket实现服务器端和客户端通讯
- java使用UDP来进行客户端和服务器端通信的简单例子
- gRPC java 客户端,服务器端通讯使用json格式
- 使用Struts 2将客户端JSON数据映射为服务器端Java对象
- java使用UDP来进行客户端和服务器端通信的简单例子
- HessianPHP_v2.0.3.zip, 在php作客户端,java作服务器端时,使用注意事项:
- Java 客户端后台使用HTTP POST传递对象参数到服务器端
- 【Java Web】: 使用 Telnet 远程连接服务器端与 Tomcat 服务器的搭建
- Java_socket程序学习03-一个客户端对一个服务器-交互(服务器端)--01
- 在vs code中使用ftp-sync插件实现客户端与服务器端代码的同步
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- Zookeeper-Java客户端API的基本使用
- QT 使用QUdpSocket QUdpServer UDP 建立客户端与服务器端
- fastdfs 图片服务器 使用java端作为客户端上传图片
- 在Eclipse下怎么部署环境来使用OpenCV Java
- 使用 Velocity 实现客户端和服务器端模板
- 怎么判断oracle客户端、服务器端的位数