没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
实验六 Socket 网络程序设计
一、 实验目的:
理解 Socket 通信原理,掌握使用 Socket 和 ServerSocket 类进行 TCP Socket
通信的程序设计方法。
二、实验内容:
1、使用 ServerSocket 类和 Socket 类实现按如下协议通信的服务器端和客户
端程序。
服务器程序的处理规则如下:
1) 向客户端程序发送 Verifying Server!。
2) 若读口令次数超过 3 次,则发送 Illegal User!给客户端,程序退出。否则
向下执行步骤 3)。
3) 读取客户端程序提供的口令。
4) 若口令不正确,则发送 PassWord Wrong!给客户端,并转步骤 2),否则
向下执行步骤 5)。
5) 发送 Registration Successful!给客户端程序。
客户端程序的处理规则如下:
1) 读取服务器反馈信息。
2) 若反馈信息不是 Verifying Server!,则提示 Server Wrong!,程序退出。否
则向下执行步骤 3)
3) 提示输入 PassWord 并将输入的口令发送给服务器。
4) 读取服务器反馈信息。
5) 若反馈信息是 Illegal User!,则提示 Illegal User!,程序退出。否则向下执
行步骤 6)
6) 若反馈信息是 PassWord Wrong!,则提示 PassWord Wrong!,并转步骤
3),否则向下执行步骤。
7) 输出 Registration Successful!。
2、实现聊天室功能。
1)完成服务器端和一个客户端之间的聊天功能。
2)扩展部分,采用多线程技术实现一个服务器端和多个客户端之间的聊天
功能。
三、实验代码与实验结果截图:
1、使用 ServerSocket 类和 Socket 类实现按如下协议通信的服务器端和客户端
程序。
实现代码:
//客户端
package java_实验;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class shiyan6_client{
public static void main(String[] args) throws IOException {
Socket ser=new Socket("192.168.0.105",4355);
Scanner scanner =new Scanner(System.in);
String str,sc;
PrintWriter out=new
PrintWriter(ser.getOutputStream(),true);
BufferedReader in=new BufferedReader(new
InputStreamReader(ser.getInputStream()));
while(true)
{
str=in.readLine();
System.out.println("Server:"+str);
if(str.equals("Illegal
User!")||str.equals("Registration Successful!"))
{
break;
}
System.out.print("Client:");
sc= scanner.next();
out.println(sc);
}
out.close();
in.close();
ser.close();
}
}
-----------------------------------------------------------------
//服务端
package java_实验;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Objects;
public class shiyan6_server{
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(4355);
Socket server = socket.accept();
String password;
int count = 0;
PrintWriter out = new
PrintWriter(server.getOutputStream(), true);//返回 TCP 连接提供的字
节输出流,将其格式化
BufferedReader in = new BufferedReader(new
InputStreamReader(server.getInputStream()));//字节输入流转换为字符
输入流,
//BufferedReader 提供以缓冲方式读取一行字符串的方法
out.println("Verifying Server!");
while (true) {
password = in.readLine(); //读取客户端数据
System.out.println("Client:" + password);
if (Objects.equals(password, "210753")) {
out.println("Registration Successful!");
System.out.println("Server:Registration
Successful!");
System.exit(0);
} else {
count++;
if (count == 3) {
out.println("Illegal User!");
System.out.println("Server: Illegal User!");
break;
} else {
out.println(" PassWord Wrong!");
System.out.println("Server: PassWord Wrong!");
}
}
}
out.close();
in.close();
server.close();
socket.close();
}
}
运行结果:
客户端:
服务端:
剩余19页未读,继续阅读
资源评论
爱喝矿泉水的猛男
- 粉丝: 352
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功