TCP實(shí)現(xiàn)服務(wù)器回應(yīng)的代碼
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
/*
?* 模擬登錄雙向
?* 創(chuàng)建客戶端
?* 1.使用Socket創(chuàng)建客戶端(這里實(shí)際上就是和服務(wù)器建立連接)
?* 所以需要指定服務(wù)器的地址和端口
?* 2.輸入輸出流操作
?* 3.釋放資源
?*/
public class LoginTwoWayClient {
?? ?public static void main(String[] args) throws UnknownHostException, IOException {
?? ??? ?System.out.println("------client----------");
?? ??? ?//InputStreamReader是從字節(jié)流到字符流的橋:它讀取字節(jié),并使用指定的charset將其解碼為字符
?? ??? ?BufferedReader console=new BufferedReader(new InputStreamReader(System.in));
?? ??? ?System.out.println("請(qǐng)輸入用戶名:");
?? ??? ?String uname=console.readLine();
?? ??? ?System.out.println("請(qǐng)輸入密碼:");
?? ??? ?String upwd=console.readLine();
?? ??? ?//1.使用Socket創(chuàng)建客戶端(這里實(shí)際上就是和服務(wù)器建立連接)
?? ??? ?Socket client=new Socket("localhost",8888);
?? ??? ?// 2.輸入輸出流操作
?? ??? ?DataOutputStream dos=new DataOutputStream(client.getOutputStream());
?? ??? ?dos.writeUTF("用戶名:"+uname+"&"+"密碼:"+upwd);
?? ??? ?dos.flush();
?? ??? ?
?? ??? ?DataInputStream dis=new DataInputStream(client.getInputStream());
?? ??? ?String result=dis.readUTF();//接收數(shù)據(jù)
?? ??? ?System.out.println(result);
?? ??? ?//3.釋放資源
?? ??? ?dis.close(); ?
?? ??? ?dos.close();
?? ??? ?client.close();
?? ?}
}
package cn.jd.tcp;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/*
?* 模擬登錄 雙向
?* 創(chuàng)建服務(wù)器
?* 1.指定端口:使用ServerSocket創(chuàng)建服務(wù)器
?* 2.阻塞式的等待連接
?* 3.輸入輸出流操作
?* 4.釋放資源
?*/
public class LoginTwoWayServer {
?? ?public static void main(String[] args) throws IOException {
?? ??? ?System.out.println("------server----------");
?? ??? ?//1.指定端口:使用ServerSocket創(chuàng)建服務(wù)器
?? ??? ?ServerSocket server=new ServerSocket(8888);
?? ??? ?//2.阻塞式等待連接accept
?? ??? ?Socket client=server.accept();//一次accept就是一個(gè)連接
?? ??? ?System.out.println("一個(gè)客戶端建立了連接");
?? ??? ?//3.輸入輸出流操作
?? ??? ?DataInputStream dis=new DataInputStream(client.getInputStream());
?? ??? ?String datas=dis.readUTF();//接收數(shù)據(jù)
?? ??? ?String uname="";
?? ??? ?String upwd="";
?? ??? ?//分析
?? ??? ?String[]? dataArray=datas.split("&");
?? ??? ?for(String info:dataArray) {
?? ??? ??? ?String[]? userInfo=info.split(":");
//?? ??? ??? ?System.out.println(userInfo[0]+"-->"+userInfo[1]);
?? ??? ??? ?if(userInfo[0].equals("用戶名")) {
?? ??? ??? ??? ?System.out.println("你的用戶名為:"+userInfo[1]);
?? ??? ??? ??? ?uname=userInfo[1];
?? ??? ??? ?}else if(userInfo[0].equals("密碼")) {
?? ??? ??? ??? ?System.out.println("你的密碼為:"+userInfo[1]);
?? ??? ??? ??? ?upwd=userInfo[1];
?? ??? ??? ?}
?? ??? ?}
?? ??? ?//輸出
?? ??? ?DataOutputStream dos=new DataOutputStream(client.getOutputStream());
?? ??? ?if(uname.equals("abc")&&upwd.equals("123")) {//成功
?? ??? ??? ?dos.writeUTF("登錄成功");
?? ??? ?}else {//失敗
?? ??? ??? ?dos.writeUTF("用戶名和密碼錯(cuò)誤");
?? ??? ?}
?? ??? ?dos.flush();
?? ??? ?dos.close();
?? ??? ?//4.釋放資源
?? ??? ?dis.close();
?? ??? ?client.close();
?? ??? ?server.close();
?? ?}
?? ?
}
標(biāo)簽: