Client.Main.java 客户端
package com.company;
import java.io.*;
import java.net.Socket;
public class Main {
//客户端
//1创建socket连接服务端(指定ip地址 端口) 通过ip找到服务器
//2 调用socket的getinputstream 和getoutputstream
//获得和拂服务器相连接的io流
// 3 输入流可以读出服务器输出流写出的数据
// 4输出流可以读取服务器输出流写入的数据
public static void main(String[] args) throws IOException {
// demo1();
demo2();
}
// write your code here
public static void demo1() throws IOException {
//1创建socket连接服务端(指定ip地址 端口) 通过ip找到服务器
Socket socket = new Socket("127.0.0.1", 12345);
//2获取客户端输入流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
byte[] arr = new byte[1024];
//读取服务器发来的数据
int len = is.read(arr);
System.out.println(new String(arr, 0, len));
//向服务器写数据
os.write("搜索内容".getBytes());
socket.close();
}
// 自带缓存方式
public static void demo2() throws IOException {
//1创建socket连接服务端(指定ip地址 端口) 通过ip找到服务器
Socket socket = new Socket("127.0.0.1", 12345);
//2获取客户端输入流
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//printstream有自动换行功能
PrintStream ps = new PrintStream(socket.getOutputStream());
//读取服务器发来的数据
System.out.println(br.readLine());
//向服务器写数据
ps.println("我帅吗");
//读取服务器发来的数据
System.out.println(br.readLine());
//向服务器写数据
ps.println("真心话?");
System.out.println(br.readLine());
socket.close();
}
}
ServerMain.java 服务端
package com.company;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Created by dllo on 17/5/20.
*/
public class ServerMain {
//服务端
//1创建ServerSocket(需要制定端口号)
//2调用ServerSocket的accept方法 接收一个客户端请求,
//得到一个Socket
//3 调用socket的getinputstream 和getoutputstream
//获得和拂服务器相连接的io流
//4 输入流可以读取客户端输出流写出的数据
// 5输出流可以读取客户端输出流写入的数据
public static void main(String[] args) throws IOException {
//demo1();
demo2();
// demo3();
}
public static void demo1() throws IOException {
// 1 创建ServerSocket(需要制定端口号)
ServerSocket server = new ServerSocket(12345);
//2调用SerintverSocket的accept方法 接收一个客户端请求,
Socket socket = server.accept();
// 3 调用socket的getinputstream 和getoutputstream
//获得和服务器相连接的io流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
//4 输入流可以读取客户端输出流写出的数据
// 5输出流可以读取客户端输出流写入的数据
os.write("baidu".getBytes());
byte[] arr = new byte[1024];
int len = is.read(arr);
System.out.println(new String(arr, 0, len));
socket.close();
}
public static void demo2() throws IOException {
// 1 创建ServerSocket(需要制定端口号)
ServerSocket server = new ServerSocket(12345);
//2调用ServerSocket的accept方法 接收一个客户端请求,
Socket socket = server.accept();
// 3 调用socket的getinputstream 和getoutputstream
//获得和拂服务器相连接的io流
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//printstream有自动换行功能
PrintStream ps = new PrintStream(socket.getOutputStream());
//向客户端应答
ps.println("百度一下你就知道");
System.out.println(br.readLine());
ps.println("帅");
System.out.println(br.readLine());
ps.println("必须的");
socket.close();
}
//开启线程 一致等待处理客户端数据
public static void demo3() throws IOException {
ServerSocket server = new ServerSocket(12345);
while (true){
//内部类访问外部变量,加final
final Socket socket = server.accept();
//创建线程
new Thread() {
@Override
public void run() {
super.run();
try { BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//printstream有自动换行功能
PrintStream ps = new PrintStream(socket.getOutputStream());
//向客户端应答
ps.println("百度一下你就知道");
System.out.println(br.readLine());
ps.println("返回搜索结果");
System.out.println(br.readLine());
}catch (Exception e){
e.printStackTrace();
}
}
}.start();
}
}
}
本文介绍了一个简单的Java网络编程实例,包括客户端和服务端的实现过程。客户端通过Socket与服务端建立连接,并进行数据交换。服务端则负责接收客户端的请求并作出响应。文中详细展示了如何使用BufferedReader和PrintStream进行高效的数据读写。
1819

被折叠的 条评论
为什么被折叠?



