//服务器端
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;
class FaceServer extends ServerSocket{//点对面的 面Server
private int port;//端口
public FaceServer(int port) throws IOException{
super(port);
this.port = port;
System.out.println("服务器已经启动,监听端口号为:" + port);
System.out.println("正在等待客户的连接...........");
try{
while(true){//循环挂起等待客户的请求连接
Socket socketCon = accept();
new ServerThread(socketCon, port);//建立服务线程,这是调用下面的 线程
}
}catch(IOException e ){
System.out.println("没有监听到客户端的信息......");
}finally{
close();
}
}
}
class ServerThread extends Thread{
private int port;
private Socket socketConn;
private BufferedReader in;
private PrintWriter out;
public ServerThread(Socket s, int port) throws IOException{
this.port = port;
this.socketConn = s;
in = new BufferedReader(new InputStreamReader(socketConn.getInputStream(), "gb2312"));
out = new PrintWriter(socketConn.getOutputStream(), true);
out.println("服务器连接成功.........");//向客户端发送的信息
out.println("输入exit断开与服务连接");
start();
}
public void run(){
try{
boolean done = false;
while(!done){
String line = in.readLine();
if(line == null){
done = true;
}else{
System.out.println("客户端传来的内容:" + line);
String message = line;
out.println("从服务器发送的内容:" + message);
if(line.trim().equals("exit")){
done = true;
}
}
}
System.out.println("客户端终止发送信息..........");
socketConn.close();
}catch(Exception e){
System.out.println("启动服务器出现错误:" + e.getMessage());
}
}
}
public class TextFaceServer{
public static void main(String[] args){
try{
new FaceServer(8080);
}catch(Exception e){
System.out.println("服务器进行监听出现异常:" + e.getMessage());
}
}
}
//客户端,可启动多个
import java.io.*;
import java.net.*;
class SocketServer{
private int port;
public SocketServer(int port){
this.port = port;//端口
start();//开始的方法
}
public String infoUpperCase(String line){
return line.toUpperCase();//字符大写
}
public void start(){
try{
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("服务器已经启动,监听端口号为:" + port);
System.out.println("正在等待客户端连接.........");
Socket socketAccept = serverSocket.accept();
//获取读取客户端的数据流
BufferedReader in = new BufferedReader(new InputStreamReader(socketAccept.getInputStream()));
//写入客户端的流,自动刷新
PrintWriter out = new PrintWriter(socketAccept.getOutputStream(),true);
out.println("服务器连接成功........");//向客户端发送信息
out.println("输入exit断开与服务连接");
boolean done = false;
while(!done){
String line = in.readLine();//读取客户端每行的内容
if(line == null){//读取的内容为空
done = true;
}else{
System.out.println("客户端传来的内容:" + line);
String message = infoUpperCase(line);
out.println("从服务器端口发送的内容:" + message);
if(line.trim().equals("exit")){
done = true;//退出
}
}
}
socketAccept.close();//关闭通信资源
}catch(Exception e){
System.out.println("启动服务器出现错误:" + e.getMessage());
}
}
}
public class TextSocketServer{
public static void main(String[] args){
try{
//SocketServer server = new SocketServer(8080);
new SocketServer(8080);
}catch(Exception e){
System.out.println("测试服务器监听出错:" + e.getMessage());
}
}
}