您的位置:首页 > 理论基础 > 计算机网络

TCP协议模拟用户登录

2015-11-26 17:05 239 查看
首先来回顾一下TCP协议的特点:(请点我),在通信的两台设备之间建立连接通道,因为建立连接,传输可靠一些,但是速度会慢一些。TCP协议又称为三次握手协议,因为建立过程有三步,发送请求、获取反馈、建立连接。

需求:通过TCP协议模拟用户登录,服务器端通过验证,则显示“您好,欢迎使用!”;否则返回“用户不存在!请重新输入“

1、建立服务器端

<span style="font-size:14px;">public class ServerDemo {
public static void main(String[] args) throws IOException {

// 创建服务器Socket对象,端口号设置为12306
ServerSocket ss = new ServerSocket(12306);

// 监听客户端对象,此方法在客户端未连接之前一直处于阻塞状态
Socket s = ss.accept(); //此方法返回一个Socket对象,可以调用Socket方法

// 获取输入流,需要使用转换流将字节流转换为字符流
// s.getInputStream()返回一个服务器与客户端之间的输出流
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

// 获取输出流,true表示将缓冲区中的数据输出
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);

String line = br.readLine();
if ("yuefei".equals(line)) { //正确的用户名应该是yuefei
pw.println("欢迎使用!");
} else {
pw.println("用户不存在!请重新输入");
}

// 释放资源
s.close();
ss.close();
}
}
</span>2、创建客户端
<span style="font-size:14px;">public class ClientDemo {
public static void main(String[] args) throws IOException {

// 创建客户端Socket对象
Socket s = new Socket("192.168.3.100", 12306);

// 获取输出流
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);

pw.println("yuefei"); //假定客户端输入的是正确的用户名

// 获取输入流
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = br.readLine();
System.out.println("line:" + line);

// 释放资源
s.close();
}
}</span>  程序正确的运行过程应该是:首先开启服务器,服务器处于监听状态,然后客户端与服务器建立连接,由于建立了连接,客户端可以向服务器端发送数据,然后客户端向服务器端发送了”yuefei“用户名,服务器端接收并进行验证,验证成功,然后向客户端发送”欢迎使用!“,客户端进行接收。
附:广播地址。

  广播地址是每一个网段的最后一个地址,假如对于192.168.26网段来说,192.168.26.255就是这个网段的广播地址。在广播地址发送的数据,该网段的所有IP地址所在的计算机都会收到,所以称之为”广播“。

  小结:TCP协议中,应该首先开启服务器端,因为它们之间要建立连接,不开服务器会因为找不到服务器而报错;而对于UDP协议就不必开始,它们之间不建立连接,而且UDP协议并不保证接收端一定会受到发送数据。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: