服务器端
package com.thinkvenus.study.socket; 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.Socket; /**
* 服务器端线程处理类
*/
public class ThreadServer extends Thread { private Socket socket; public ThreadServer(Socket socket) {
this.socket = socket;
} /**
* 线程执行的操作,响应客户端请求
*/
@Override
public void run() {
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
OutputStream os = null;
PrintWriter pw = null; try {
is = socket.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
String msg;
while((msg = br.readLine()) != null) {
System.out.println("这里是服务器端,客户端说:" + msg);
}
socket.shutdownInput();//关闭输入 //获取输出流,响应客户端的请求
os = socket.getOutputStream();
pw = new PrintWriter(os);
pw.write("欢迎您");
pw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally { //关闭资源
try {
if(pw != null) pw.close();
if(os != null) os.close();
if(br != null) br.close();
if(isr != null) isr.close();
if(is != null) is.close();
if(socket != null) socket.close();
} catch (IOException e) {
e.printStackTrace();
} }
} }
package com.thinkvenus.study.socket; 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.ServerSocket;
import java.net.Socket; /**
* 基于TCP的socket通信
*/ public class Server { public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("*****************服务端即将启动,等待客户端的连接**********");
int count = 0;
//循环监听客户端的连接
while(true) {
Socket socket = serverSocket.accept();//开始监听
ThreadServer ts = new ThreadServer(socket);
ts.start();
count++;
System.out.println("客户端的数量:"+count);
} } catch (IOException e) {
e.printStackTrace();
} } }
客户端:
package com.thinkvenus.study.socket; 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.Socket;
import java.net.UnknownHostException; public class Client { public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
pw.println("username=aaron; pwd="+Math.random());
pw.flush(); socket.shutdownOutput();//关闭输出
//获取输入流,获取服务器端的响应
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String msg;
while((msg = br.readLine()) != null) {
System.out.println("我是客户端,服务端说:"+ msg);
} //关闭资源
br.close();
isr.close();
is.close();
pw.close();
os.close();
socket.close(); } catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }