基于服务端和客户端之间的通信
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();
}
}
* 服务端的代码
*/
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();
}
}
相关文章推荐
- BZOJ-4424 &&CodeForces-19E Fairy DP+dfs (Link-Cut-Tree可A)
- Android从零开始(一)
- 支付宝 iOS SDK 的简单使用
- 杭电oj Problem-1013 Digital Roots
- form
- Java程序猿需要掌握的知识
- BZOJ-4424 &&CodeForces-19E Fairy DP+dfs (Link-Cut-Tree可A)
- Android使用自定义View继承SurfaceView实现动态折线图的绘制
- Hdu 1205 吃糖果【思维题目】
- android studio SDK 集成 一键分享 第三方登录:
- 机房收费系统重构之SQLhelper的理解
- Java与设计模式-代理模式
- 引入github上面的开源项目LDrawer时出现actionbar错误
- Windows 7内存占用大的原因
- 实现采用客户/服务器通信模式,基于TCP网络通信协议的多客户端简单应用
- 如何把char字符串循环右移N位
- Git的简单使用
- redis使用例子和net模块
- Exercise(4):01背包(简单动规)问题的两种解法
- java基础知识