socket简单实现实时通信案例
2014-03-21 16:47
330 查看
socket简单实现实时通信案例
package Grasp;
public class TestGrasp {
public static void main(String[] args) {
GraspClient gc = GraspClient.getGraspTcp();
System.out.println(gc);
gc.requestServer("select|2");
System.out.println("发送成功");
String response = gc.responseServer();
System.out.println("取得成功");
System.out.println(response);
gc.requestServer("select|3");
System.out.println("发送成功");
response = gc.responseServer();
System.out.println("取得成功");
System.out.println(response);
}
}
package Grasp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class GraspClient {
private Socket s;
private BufferedReader input;
private PrintWriter out;
private static GraspClient gc;
private String line;
private boolean wait;
private Object obj;
private GraspClient(String serverIp, int serverPort){
try {
obj = new Object();
wait = true;
s = new Socket(serverIp, serverPort);
System.out.println("连接成功");
input = new BufferedReader(new InputStreamReader(
s.getInputStream(), "GB2312"));
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())), true);
new Thread(new ClientThread(input, wait, obj)).start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static GraspClient getGraspTcp(){
if(gc == null){
gc = new GraspClient("192.168.0.128", 1212);
}
return gc;
}
// 取得响应
public String responseServer(){
if(line == null){
synchronized (obj) {
try {
System.out.println("等待数据");
obj.wait();
System.out.println("等待完毕");
} catch (InterruptedException e) {
e.printStackTrace();
}
obj.notifyAll();
}
}
String response = line;
line = null;
return response;
}
// 发送请求
public void requestServer(String request){
out.println(request);
}
// 关闭连接
public void close(){
try {
out.close();
input.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void setLine(String line) {
this.line = line;
}
public void setWait(boolean wait){
this.wait = wait;
}
}
package Grasp;
import java.io.BufferedReader;
import java.io.IOException;
public class ClientThread implements Runnable{
private BufferedReader input;
private Object obj;
public ClientThread(BufferedReader input, boolean wait, Object obj){
this.input = input;
this.obj = obj;
}
public void run() {
try {
String line;
while((line = input.readLine()) != null){
GraspClient.getGraspTcp().setLine(line);
synchronized (obj) {
obj.notifyAll();
}
}
} catch (IOException e) {
System.out.println("线程出现异常");
}
}
}
package Grasp;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class GraspServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(12124);
while(true){
Socket s = ss.accept();
System.out.println("有连接");
new Thread(new ServerThread(s)).start();
}
} catch (IOException e) {
System.out.println(e);
}
}
}
package Grasp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerThread implements Runnable {
private BufferedReader in;
private PrintWriter out;
public ServerThread(Socket s) {
try {
in = new BufferedReader(new InputStreamReader(
s.getInputStream(), "GB2312"));
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())), true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
String line = null;
while((line = readFromClient()) != null){
System.out.println(line);
if(line.equals("select|1")){
out.println("电脑,0001,ME1,E1 苹果,0002,ME2,EN2 香蕉,0003,ME3,EN3 笔记本,0004,ME4,EN4 电话,0005,ME5,EN5|3");
}else if(line.equals("select|2")){
out.println("电脑,0006,ME6,E6 苹果,0007,ME7,EN7 香蕉,0008,ME8,EN8 笔记本,0009,ME9,EN9 电话,0010,ME10,EN10|3");
}else if(line.equals("select|3")){
out.println("电脑,0011,ME11,E11 苹果,00012,ME12,EN12 香蕉,00013,ME13,EN13 笔记本,00014,ME14,EN14 电话,0015,ME15,EN15|3");
}else{
out.println("错误指令");
}
}
}
public String readFromClient(){
try {
return in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
package Grasp;
public class TestGrasp {
public static void main(String[] args) {
GraspClient gc = GraspClient.getGraspTcp();
System.out.println(gc);
gc.requestServer("select|2");
System.out.println("发送成功");
String response = gc.responseServer();
System.out.println("取得成功");
System.out.println(response);
gc.requestServer("select|3");
System.out.println("发送成功");
response = gc.responseServer();
System.out.println("取得成功");
System.out.println(response);
}
}
package Grasp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class GraspClient {
private Socket s;
private BufferedReader input;
private PrintWriter out;
private static GraspClient gc;
private String line;
private boolean wait;
private Object obj;
private GraspClient(String serverIp, int serverPort){
try {
obj = new Object();
wait = true;
s = new Socket(serverIp, serverPort);
System.out.println("连接成功");
input = new BufferedReader(new InputStreamReader(
s.getInputStream(), "GB2312"));
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())), true);
new Thread(new ClientThread(input, wait, obj)).start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static GraspClient getGraspTcp(){
if(gc == null){
gc = new GraspClient("192.168.0.128", 1212);
}
return gc;
}
// 取得响应
public String responseServer(){
if(line == null){
synchronized (obj) {
try {
System.out.println("等待数据");
obj.wait();
System.out.println("等待完毕");
} catch (InterruptedException e) {
e.printStackTrace();
}
obj.notifyAll();
}
}
String response = line;
line = null;
return response;
}
// 发送请求
public void requestServer(String request){
out.println(request);
}
// 关闭连接
public void close(){
try {
out.close();
input.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void setLine(String line) {
this.line = line;
}
public void setWait(boolean wait){
this.wait = wait;
}
}
package Grasp;
import java.io.BufferedReader;
import java.io.IOException;
public class ClientThread implements Runnable{
private BufferedReader input;
private Object obj;
public ClientThread(BufferedReader input, boolean wait, Object obj){
this.input = input;
this.obj = obj;
}
public void run() {
try {
String line;
while((line = input.readLine()) != null){
GraspClient.getGraspTcp().setLine(line);
synchronized (obj) {
obj.notifyAll();
}
}
} catch (IOException e) {
System.out.println("线程出现异常");
}
}
}
package Grasp;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class GraspServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(12124);
while(true){
Socket s = ss.accept();
System.out.println("有连接");
new Thread(new ServerThread(s)).start();
}
} catch (IOException e) {
System.out.println(e);
}
}
}
package Grasp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerThread implements Runnable {
private BufferedReader in;
private PrintWriter out;
public ServerThread(Socket s) {
try {
in = new BufferedReader(new InputStreamReader(
s.getInputStream(), "GB2312"));
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(s.getOutputStream())), true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
String line = null;
while((line = readFromClient()) != null){
System.out.println(line);
if(line.equals("select|1")){
out.println("电脑,0001,ME1,E1 苹果,0002,ME2,EN2 香蕉,0003,ME3,EN3 笔记本,0004,ME4,EN4 电话,0005,ME5,EN5|3");
}else if(line.equals("select|2")){
out.println("电脑,0006,ME6,E6 苹果,0007,ME7,EN7 香蕉,0008,ME8,EN8 笔记本,0009,ME9,EN9 电话,0010,ME10,EN10|3");
}else if(line.equals("select|3")){
out.println("电脑,0011,ME11,E11 苹果,00012,ME12,EN12 香蕉,00013,ME13,EN13 笔记本,00014,ME14,EN14 电话,0015,ME15,EN15|3");
}else{
out.println("错误指令");
}
}
}
public String readFromClient(){
try {
return in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
相关文章推荐
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
- Java 基于TCP/IP 实现简单的 socket 通信
- 实现一个简单Socket通信示例
- C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- socket 实例实现简单通信
- 关于socket用winform实现简单通信 大牛可绕道 初学者可以看看 我做的时候把客户端窗口隐藏了 大家可以自己改一下
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
- C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)
- 在 Linux 上实现基于 Socket 的多进程实时通信
- 【转】 C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- 利用socket TCP协议实现客户端与服务端简单通信
- php socket通信简单实现
- Linux C UDP Socket实现客户与服务器简单通信
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- socket编程(一),实现服务器与客户端简单通信
- 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)
- 利用Tcp和socket实现的客户端与服务端的简单通信
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- android socket通信非阻塞式简单实现
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)