前言
TCP和UDP的区别是开发的时候经常会遇到的问题,TCP是面向连接的协议,可靠,但是效率比UDP低,开销也大,适合文件传输、远程登录,HTTP协议也是基于TCP协议的,一切为了完整性和可靠性。UDP适合即时聊天,没有保证,但是即使出现了错误,重新传输的代价也不高。
在登陆系统中,是否登陆成功,是需要返回一个反馈的,所以采用TCP比较合适。
效果
这里设定了账号为oushile,密码为123,否则登陆失败
客户端:
服务端:
代码
Server.java:
package TCP;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server=new ServerSocket(8888);
Socket socket = server.accept();
System.out.println("Connected!");
DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
String data=dataInputStream.readUTF();
String[] split = data.split("&");
for (String array:split){
System.out.println(array);
}
DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
if(split[0].equals("oushile")&&split[1].equals("123")){
dataOutputStream.writeUTF("Successfully!");
dataOutputStream.flush();
}else{
dataOutputStream.writeUTF("Failed,please check your messages");
dataOutputStream.flush();
}
dataInputStream.close();
server.close();
}
}
Client.java
package TCP;
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket client=new Socket("localhost",8888);
DataOutputStream dataOutputStream = new DataOutputStream(client.getOutputStream());
System.out.println("请输入用户名");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String username=bufferedReader.readLine();
System.out.println("Please input password");
bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String password = bufferedReader.readLine();
dataOutputStream.writeUTF(username+"&"+password);
dataOutputStream.flush();
DataInputStream dataInputStream = new DataInputStream(client.getInputStream());
System.out.println(dataInputStream.readUTF());
dataOutputStream.close();
client.close();
}
}