客户端代码:
package threadTest.socket;
import com.sun.corba.se.impl.orbutil.ObjectWriter;
import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;
import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
/**
* Created by Administrator on 2016/8/6.
* 客户端类
*/
public class SocketClient {
public static void main(String[] args) {
Socket socket = null;
BufferedWriter bw = null;
boolean isCon = false;
Scanner input = new Scanner(System.in);
ObjectOutputStream oos = null;
ByteArrayOutputStream bos = null;
do{
try {
socket = new Socket("localhost", 5050); //连接服务器
System.out.println("请输入信息");
String info = input.next();
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(info); //发送信息
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
bw.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("是否继续输入信息(1,是;2,否):");
String flag = input.next();
if("1".equals(flag)){
isCon = true;
} else{
isCon = false;
}
} while(isCon);
}
}
服务器端代码:
package threadTest.socket;
import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Created by Administrator on 2016/8/6.
* 服务器端代码
*/
public class SocketServer {
public static void main(String[] args) {
ServerSocket server = null;
Socket socket = null;
try {
server = new ServerSocket(5050); //建立服务器
System.out.println("--服务器已启动--");
while(true){ //保持监听状态
socket = server.accept(); //开启监听
Thread thread = new Thread(new ServerThread(socket)); //每一个客户开启一个新线程
thread.start(); //使线程处于可运行状态
}
} catch (IOException e) {
e.printStackTrace();
} finally { //关闭流
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务器线程类:
package threadTest.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
/**
* Created by Administrator on 2016/8/7.
* 线程
*/
public class ServerThread implements Runnable{
private Socket socket;
public ServerThread(Socket socket){
this.socket = socket;
}
@Override
public void run() {
BufferedReader br = null;
int count = 0;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String content = null;
while((content = br.readLine()) != null){
System.out.println("client info:" + content);
}
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
br.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这样就能实现服务器多线程间通信