您的位置:首页 > 其它

基于服务端和客户端之间的通信

2016-03-13 19:48 399 查看
/*

 * 服务端的代码

 */

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.ServerSocket;

import java.net.Socket;

public class TCPServer {

public static void main(String[] args)throws IOException {
//1:创建一个ServerSocket对象
ServerSocket serverSocket=new ServerSocket(8888);
//2:调用accept()方法来接受客户端的请求
Socket socket=serverSocket.accept();
System.out.println(socket.getInetAddress().getHostAddress()+"has connected");

//3:获取socket对象的输入输出流
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

// BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
PrintWriter pw=new PrintWriter(socket.getOutputStream(),true);
String  line=null;
//读取客户端传过来的数据
while ((line=br.readLine())!=null) {
if (line.equals("over")) {
break;
}
System.out.println(line.toUpperCase());//输出客户端写入的数据
/*bw.write(line.toUpperCase());//把转写成大写的字符串传送给客户端
bw.newLine();//换行
bw.flush();//强制刷新缓冲区

*/
pw.println(line);

}
pw.close();

// bw.close();
br.close();
socket.close();
System.out.println(socket.getInetAddress().getHostAddress()+"has disconnected");

}
}

/*

 * 客户端

 */

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 TCPClient {

public static void main(String[] args) throws IOException{
Socket  socket=new Socket("127.0.0.1", 8888);//用本机作为服务器,端口号为8888
BufferedReader br=new BufferedReader(
new InputStreamReader(System.in));
/*BufferedWriter bw=new  BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));*/
BufferedReader reader=new BufferedReader
(new InputStreamReader(socket.getInputStream()));
PrintWriter pw=new PrintWriter(socket.getOutputStream(),true);
while (true) {
String  line=br.readLine();//获取键盘所输入的字符串
/*bw.write(line);
bw.newLine();//用来生成一个回车符换行

//使用PrintWriter代替这三行
bw.flush();*/

pw.println(line);
if (line.equals("over")) {
break;
}
System.out.println(reader.readLine());//获取服务端传来的大写字符串
}
reader.close();
br.close();
pw.close();

// bw.close();
socket.close();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: