TCP是基于IO流的操作,分为了客户端和服务端,两者通信需要经过三次握手。
创建客户端和服务端的基本流程:
客户端
1、创建客户端 Socket(String host, int port) 指定服务端的IP+端口
2、获取IO流
3、写出数据
4、关闭
public class TCPClient {
public static void main(String[] args) throws IOException {
System.out.println("-----client-----");
Scanner scanner=new Scanner(System.in);
//从键盘手动输入用户名和密码
System.out.print("请输入用户名:");
String name=scanner.next();
System.out.print("请输入密码:");
String pwd=scanner.next();
//创建客户端 127.0.0.1测试端口号
Socket client = new Socket("127.0.0.1", 8888);
//获取输出流
OutputStream os = client.getOutputStream();
//往服务器端写出数据
os.write(("name="+name+"&"+"pwd="+pwd).getBytes());
os.flush();
//接收从服务端发送的数据
InputStream is = client.getInputStream();
byte [] bytes=new byte[1024];
int len = is.read(bytes);
//new String(bytes,0,len)这个将读取到的字节转化为字符
System.out.println(new String(bytes,0,len));
//关闭
is.close();
os.close();
client.close();
}
}
服务端
1、创建服务端 ServerSocket(int port) 创建绑定到特定端口的服务器套接字。 服务端的端口号
2、阻塞式监听
3、获取IO流
4、读入数据
5、操作数据
6、关闭
public class TCPServer {
public static void main(String[] args) throws IOException {
System.out.println("----server----");
String name = "laozhang";
String pwd="laowang";
//创建服务端
ServerSocket server=new ServerSocket(8888);
//创建阻塞式监听
Socket client = server.accept();
//获取输入流
InputStream is = client.getInputStream();
//读取客户端传入的数据
byte [] bytes=new byte[1024];
int len = is.read(bytes);
String str=new String(bytes,0,len);
//将其分割开成为数组
String[] strs=str.split("&");
//通过=再做一次分割
for(String str3:strs){
String[] strs2 = str3.split("=");
if(strs2[0].equals("name")){
name=strs2[1];
}else if(strs2[0].equals("pwd")){
pwd=strs2[1];
}
}
//设置输出流
OutputStream os = client.getOutputStream();
//校验
if(name.equals("laopei")&&pwd.equals("0523")){
os.write("登录成功".getBytes());
}else{
System.out.println(name);
System.out.println(pwd);
os.write("登录失败".getBytes());
}
}
}