第一范文网 - 专业文章范例文档资料分享平台

西安邮电大学Socket网络编程实验报告 - 图文 

来源:用户分享 时间:2025/7/16 12:39:52 本文由追梦 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

《高级Internet》实验报告

题目: Socket

网络编程

学生姓名: 班 级: 学 号:

指导老师: 王文浪 成 绩:

西安邮电大学计算机学院 2015 年 4 月 27 日

一、 实验目的

② ③ ④ ⑤

熟悉Socket网络编程 熟悉CS客户机模式

熟悉ServerSocket编写服务端 熟悉使用多线程机制处理业务 了解客户机之间通信方式

二、 实验内容及要求

② ③ ④ ⑤ ⑥

采用CS模式,通过客户机向服务器端发送消息; 采用Socket来实现客户机之间的网络通信;

通过ServerSocket创建服务端来处理接受客户机请求; 通过多线程方式来处理客户机之间的通信请求; 实现通信的界面窗口;

实验内容有发送私聊消息、向选中用户发送文件、用户接受文件。

三、 实验过程

① 确定编程语言,架构方式,实及通信的协议

编程语言:Java;

结构方式:CS客户机模式;

通信协议:在过程中为每一条通信的信息设定一个type参数,标志着通信的类型; 1:向选中用户发送私信; 0: 上下线更新 -1:下线请求 2:请求发送文件 3:确定接收文件

② 创建工程项目SuperInternet_Client(客户机) SuperInternet_Server(服务器端) 项目客户机目录结构: 项目的服务器端目录结构:

③ 创建登录界面ChatLogin.java 1)(客户机)实现的核心代码:

//监听登录按钮事件(登录时从配置文件中读取用户的配置信息)btnLoginButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //读取配置文件 Properties userProperties = new Properties(); File file = new File(\); //加载配置文件的信息 LoadPropertiesUtil.loadPro(userProperties, file); //获得输入用户名 String uname = textField.getText().toString(); if(file.length() != 0) { //在配置文件中是以键值对的方式存放用户的信息,用户名(key)=密码值(value) if(userProperties.containsKey(uname)) { //配置文件中包含该用户 //获取密码框输入的用户名 String upass = new String(passwordField.getPassword()); //判断用户密码是否正确 if(upass.equals(userProperties.getProperty(uname))) { //创建网络连接并显示聊天窗口 System.out.println(\连接成功!!\); try { //创建本地网络连接,端口为8080 Socket client = new Socket(\,8080); //将登录按钮设置为不可编辑 btnLoginButton.setEnabled(false); //登录成功,打开聊天窗口 ChatRoom chatroom = new ChatRoom(uname,client); chatroom.setVisible(true);//显示聊天窗口 setVisible(false);//隐藏登录窗口 } catch (UnknownHostException e1) { e1.printStackTrace(); ErrorInfoShowUtil.errorTip(\连接服务器失败,请重新登录!\, contentPanel); } catch (IOException e1) { e1.printStackTrace(); ErrorInfoShowUtil.errorTip(\连接服务器失败,请重新登录!\, contentPanel); } }else { lblPrompt.setText(\您输入的密码错误!\);...后续省略 } });

2) 创建登录界面中调用的工具类

读取配置文件工具类(LoadPropertiesUtil),实现的核心代码:

public class LoadPropertiesUtil { /** * 加载配置文件的信息 * @param properties * @param file */ public static void loadPro(Properties properties,File file) { //文件不存在,创建该文件 if(!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); System.out.println(\创建配置文件失败,请检查!\); } } //加载配置文件的信息 try { properties.load(new FileInputStream(file)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 错误信息窗口工具类(ErrorInfoShowUtil.java),实现核心代码:

/** * 显示错误连接错误提示框 * @author XiyouJackielin * */ public class ErrorInfoShowUtil { public static void errorTip(String errorInfo,JPanel contentPanel) { JOptionPane.showMessageDialog(contentPanel, errorInfo, \, JOptionPane.ERROR_MESSAGE); } }

3) 编写服务器端ChatServer.java,接收客户机的请求连接,并返回当前在线人数:

服务器端中的静态区初始化监听连接端口及在线人数集合变量 /** * 服务器端,将听客户端请求并处理请求 * @author XiyouJackielin * */ public class ChatServer { //创建服务器端的socket private static ServerSocket serverSocket; //创建集合存放在线的用户 private static HashMap onlines; //创建静态块区,初始化相应的数据,只要创建一次 static { try { serverSocket = new ServerSocket(8080); onlines = new HashMap(); } catch (IOException e) { e.printStackTrace(); } } ......//后续代码省略(开启线程) } ④ChatRegister.java(注册页面),实现核心代码:

1)用户输入注册的信息,首先先在配置文件中寻找是否有相同的用户名,如果存在相同的用户名,则提示用户名已经重复,重新输入;

2)验证用户输入的信息,如果两次密码输入不一致,则提示密码错误;

3)用户输入注册信息验证通过后,打开配置文件Userinfo.properties,将注册信息保存至配置文件中;

@Override public void actionPerformed(ActionEvent e) { Properties userProperties = new Properties(); File file = new File(\); LoadPropertiesUtil.loadPro(userProperties, file); String uname = textField.getText().toString(); String upass = new String(passwordField.getPassword()); String confirmPass = new String(confirmpasswordField.getPassword()); //判断配置文件中是否存在该用户 if(uname.length() != 0) { if(userProperties.containsKey(\)) { lblPrompt.setText(\该用户名已经存在!\); .....//后续省略}

西安邮电大学Socket网络编程实验报告 - 图文 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1iz726vob75136q5shrd_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top