客户端逻辑
- 创建Socket对象
- 获取输出流—>请求
- 获取输入流—》响应
- 关闭流
客户端代码
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.rmi.UnexpectedException;
public class Client {
public static void main(String[] args) {
//1.创建Socket对象
Socket client = null;
DataOutputStream dos = null;
DataInputStream dis = null;
try {
client = new Socket("localhost", 8888);
//2.获取输出流--->请求
dos = new DataOutputStream(client.getOutputStream());
dos.writeUTF("我是客户端:服务器你好!");
//3.获取输入流---》响应
dis = new DataInputStream(client.getInputStream());
}catch (UnexpectedException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//4.关闭流
IOClose.closeAll(dis,dos,client);
}
}
}
服务端逻辑
- 创建ServerSocket对象
- 监听是否有客户端发送请求
- 获取Socket对象
- 获取输入流 --》得到客户端的请求
- 获取输出流—》给客户端响应结果
- 关闭流
服务端代码
public class Server {
public static void main(String[] args) {
//1.创建ServerSocket对象
ServerSocket server = null;
//2.监听是否有客户端发送请求
Socket client = null;
//3.获取Socket对象
DataInputStream dis = null;
DataOutputStream dos = null;
//4.获取输入流 --》得到客户端的请求
try {
server = new ServerSocket(8888);
client = server.accept();
dis = new DataInputStream(client.getInputStream());
System.out.println(dis.readUTF());
//5.获取输出流---》给客户端响应结果
dos = new DataOutputStream(client.getOutputStream());
dos.writeUTF("客户端您好:我是服务器,我收到你的消息");
//6.关闭流
} catch (IOException e) {
e.printStackTrace();
}finally {
IOClose.closeAll(dos,dis,client,server);
}
}
}
CS架构
开启服务端,客户端
BS架构
服务器代码2:
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server2 {
public static void main(String[] args) {
//1.创建ServerSocket对象
ServerSocket server = null;
//2.监听是否有客户端发送请求
Socket client = null;
//4.获取输入流 --》得到客户端的请求
BufferedReader br=null;
try {
server = new ServerSocket(8888);
client = server.accept();
//获取来自浏览器的请求
br = new BufferedReader(new InputStreamReader(client.getInputStream(),"utf-8"));
String str = null;
while ((str = br.readLine()).length()>0){
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
IOClose.closeAll(br,client,server);
}
}
}
网页 get请求
我的第一个html
hello world
页面展示:
输入用户名和密码
请求已经发送到服务端,我们去看看服务端
post请求
我的第一个html
hello world
服务端代码3
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server3 {
public static void main(String[] args) {
//1.创建ServerSocket对象
ServerSocket server = null;
//2.监听是否有客户端发送请求
Socket client = null;
//4.获取输入流 --》得到客户端的请求
InputStream is = null;
try {
server = new ServerSocket(8888);
client = server.accept();
//获取来自浏览器的请求
is = client.getInputStream();
byte [] buf = new byte[20480];
int len = is.read(buf);
System.out.println(new String(buf,0,len));
}catch (IOException e){
e.printStackTrace();
}finally {
IOClose.closeAll(is,client,server);
}
}
}
登录成功 带有响应结果
服务端代码4
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import static jdk.nashorn.internal.runtime.regexp.joni.encoding.CharacterType.BLANK;
public class Server4 {
public static void main(String[] args) {
String CRLF = "rn";
//1.创建ServerSocket对象
ServerSocket server = null;
//2.监听是否有客户端发送请求
Socket client = null;
//4.获取输入流 --》得到客户端的请求
InputStream is = null;
try {
server = new ServerSocket(8888);
client = server.accept();
//获取来自浏览器的请求
is = client.getInputStream();
byte [] buf = new byte[20480];
int len = is.read(buf);
System.out.println(new String(buf,0,len));
StringBuilder sb = new StringBuilder();
StringBuilder sbContent = new StringBuilder();//请求的文本
sbContent.append("响应结果 ");
sbContent.append("登录成功");
//拼接响应头
sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("ok");
sb.append(CRLF);//换行
sb.append("Content-Type:text/html;charset=utf-8");
sb.append(CRLF);
sb.append("Content-Length:").append(sbContent.toString().getBytes().length).append(CRLF);
sb.append(CRLF);//换行。代表响应头与响应的正文部门之间的空行
sb.append(sbContent);
//通过流输出
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
bw.write(sb.toString());
bw.flush();
bw.close();
}catch (IOException e){
e.printStackTrace();
}finally {
IOClose.closeAll(is,client,server);
}
}
}
关注微信公众号:一只Java程序猿
是对我最好的支持。谢谢



