文章目录
【1】实现功能
模拟网址登陆,客户端录入账号、密码,服务器验证。
客户端:Socket —>字节流
服务端:ServerSocket —>Socket—>字节流
【1.1】功能分解1:单向通信
客户端向服务端发送一句话
【单向通信——客户端】
package com.msb.testtcp;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class TestClient {
public static void main(String[] args) throws IOException {
/*向服务器发送一句话*/
//1.创建套接字,指定服务器的ip和端口号
Socket s = new Socket("172.16.0.232",8888);
//2.用套接字,获取输出流,向服务器发送文件
OutputStream os = s.getOutputStream();
//3.字节流不能传输字符串文本,使用数据流
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("你好,我是客户端");
//4.关闭网络资源、关闭流
dos.close();
s.close();
}
}
【单向通信——服务端】
package com.msb.testtcp;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TestServer {
public static void main(String[] args) throws IOException {
/*服务器接收客户端文件*/
//1.创建套接字,指定服务器端口号。与客户端一致
ServerSocket ss = new ServerSocket(8888);
//2.用套接字接收客户端的socket,客户端和服务器才产生了连接,可以通信。
Socket accept = ss.accept();//阻断方法,接收客户端socket,接收到数据才可以继续执行。
//3.用连接上的客户端,接收数据
InputStream is = accept.getInputStream();
DataInputStream dis = new DataInputStream(is);
System.out.println(dis.readUTF());//在控制台打印出,
}
}
【测试】先开服务器,再开客户端
【1.2】功能分解2:双向通信
服务端向客户端发送一句话
【服务器——双向通信】
package com.msb.testtcp;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TestServer {
public static void main(String[] args) throws IOException {
/*服务器接收客户端文件*/
//1.创建套接字,指定服务器端口号。与客户端一致
ServerSocket ss = new ServerSocket(8888);
//2.用套接字接收客户端的socket,客户端和服务器才产生了连接,可以通信。
Socket accept = ss.accept();//阻断方法,接收客户端socket,接收到数据才可以继续执行。
//3.用连接上的客户端,接收数据
InputStream is = accept.getInputStream();
DataInputStream dis = new DataInputStream(is);
System.out.println(dis.readUTF());//在控制台打印出,
//4.服务器端向客户端发送文本
OutputStream os = accept.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("我是服务端,我已经接收到你的消息");
//5.关闭网络资源、关闭流
dos.close();
os.close();
dis.close();
is.close();
accept.close();
ss.close();
}
}
【客户端——双向通信】
package com.msb.testtcp;
import java.io.*;
import java.net.Socket;
public class TestClient {
public static void main(String[] args) throws IOException {
/*向服务器发送一句话*/
//1.创建套接字,指定服务器的ip和端口号
Socket s = new Socket("172.16.0.232",8888);
//2.用套接字,获取输出流,向服务器发送文件
OutputStream os = s.getOutputStream();
//3.字节流不能传输字符串文本,使用数据流
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("你好,我是客户端");
//5.客户端接收服务器端的信息
InputStream is = s.getInputStream();
DataInputStream dis = new