客户端java代码:
package SocketUtil;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
* scoket客户端发送请求
* @author user
*
*/
public class ClientSocket {
private Socket s;
public ClientSocket(String address,int port){
try {
s=new Socket(address, port);//建立链接。。。
} catch (Exception e) {
e.printStackTrace();
System.out.println("客户端创建Socket失败!"+e.getMessage());
}
}
public void startClient(){
try{
String res = null;
BufferedReader brk =new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
while(true){
//等待客户端输入数据。。。
res=brk.readLine();
pw.println(res);//发送到服务器端
res=br.readLine();//从服务器端读取返回的数据
res=new String(res.getBytes("gbk"),"utf-8");
System.out.println("服务器端:"+res);
}
}catch (Exception e) {
System.out.println("服务器端已经断开,"+e.getMessage());
}finally{
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws InterruptedException {
ClientSocket cs=new ClientSocket("localhost", 8033);
cs.startClient();
}
}
服务器端java代码:
package SocketUtil;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* socket服务器端
* 单线程 处理单个请求
* @author user
*
*/
public class ServerSocketTest {
private ServerSocket serversocket;
private Socket socket;
public ServerSocketTest(int port){
try {
serversocket=new ServerSocket(port);
} catch (IOException e) {
e.printStackTrace();
System.out.println("创建 serverSocket失败,"+e.getMessage());
}
}
public void startServer(){
//等待客户端的链接请求 处于堵塞状态
try {
String res=null;
Socket socket=serversocket.accept();//等待接受请求。。。
//使用 bufferReader来读取
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader brk =new BufferedReader(new InputStreamReader(System.in));
//使用printWriter来写入
PrintWriter pw=new PrintWriter(socket.getOutputStream(), true);
while(true){
res=br.readLine();
if(res.equals("end"))break;
res=new String(res.getBytes("gbk"),"utf-8");
System.out.println("客户端:"+res);
res=brk.readLine();
pw.println(res);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("接收失败或客户端已断开链接,"+e.getMessage());
}finally{
try {
socket.close();
serversocket.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭异常。。");
}
}
}
public static void main(String[] args) {
ServerSocketTest sst=new ServerSocketTest(8033);
sst.startServer();
}
}