參考文檔:
https://www.sxt.cn/Java_jQuery_in_action/twelve-tcpsocket.html
參考視頻:
https://www.bilibili.com/video/BV1ct411n7oG?p=245
1.代碼功能
1.判斷從客戶端接收到的用戶名和密碼是否和已知的一致
2.返回服務(wù)器判斷的結(jié)果到客戶端上
2.學(xué)習(xí)重點(diǎn)
1.分清哪邊是輸入流哪邊是輸出流
2.split函數(shù)和數(shù)組的遍歷
3.客戶端代碼
1.發(fā)送數(shù)據(jù)用的輸出流和writeUTF(發(fā)送用戶名密碼)
2.接收數(shù)據(jù)用的輸入流和readUTF (讀取服務(wù)器判斷的結(jié)果)
3.其他思路和之前一樣
package com.sxt.tcp;
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)建客戶端+服務(wù)的地址和端口
* 2.操作:輸入輸出流操作
* 3.釋放資源
* @author Yangxiaoxia
*
*/
public class LoginTwoWayClient {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("-----Client-----");
BufferedReader console =new BufferedReader(new InputStreamReader(System.in));
System.out.print("請(qǐng)輸入用戶名:");
String uname=console.readLine();
System.out.print("請(qǐng)輸入密碼:");
String upwd =console.readLine();
//1.建立連接:使用Socket創(chuàng)建客戶端+服務(wù)的地址和端口
Socket client=new Socket("localhost",8888);
//2.操作:輸入輸出流操作
DataOutputStream dos=new DataOutputStream(client.getOutputStream());
dos.writeUTF("uname="+uname+"&"+"upwd="+upwd);
dos.flush();
DataInputStream dis=new DataInputStream(client.getInputStream());
String result=dis.readUTF();
System.out.println(result);
//3.釋放資源
dos.close();
client.close();
}
}
4.服務(wù)器端代碼
1.判斷客戶端傳來的輸入流里的數(shù)據(jù)是否符合條件,然后以輸出流返回結(jié)果給客戶端
package com.sxt.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.阻塞式等待連接 accept
* 3.操作:輸入輸出流操作
* 4.釋放資源
* @author Yangxiaoxia
*
*/
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();
System.out.println("一個(gè)客戶端建立了連接");
// 3.操作:輸入輸出流操作
DataInputStream dis=new DataInputStream(client.getInputStream());
String data=dis.readUTF();
System.out.println(data);
String uname=" ";
String upwd=" ";
//分析
String[] dataArray=data.split("&");
for(String info:dataArray) {
String[] userinfo=info.split("=");
if(userinfo[0].equals("uname")) {
uname=userinfo[1];
}else if(userinfo[0].equals("upwd")) {
upwd=userinfo[1];
}
}
//輸出
DataOutputStream dos=new DataOutputStream(client.getOutputStream());
if(uname.equals("baidu")&& upwd.equals("123456")) {//成功
dos.writeUTF("登錄成功,歡迎回來");
}else {//失敗
dos.writeUTF("用戶名或密碼錯(cuò)誤");
}
dos.flush();
//4.釋放資源
dis.close();
client.close();
server.close();
}
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。