欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    网络SOCKET编程报告(共6页).doc

    • 资源ID:14061557       资源大小:29KB        全文页数:6页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    网络SOCKET编程报告(共6页).doc

    精选优质文档-倾情为你奉上XX 大 学 实 验 报 告年 月 日 课题名称: 计算机网络实验名称:SOCKET编程实现聊天程序 班级:姓名: 同组人: 指导老师评定: 签名: 一、实验目的1、掌握网络应用程序的开发方法;2、掌握Client/ Server结构软件的设计与开发方法;3、掌握Socket机制的工作原理;4、会利用编程的方法实现Socket的工作机制,实现聊天程序。二、实验前的准备 1、阅读教材关于TCP/IP协议和Socket的相关内容;2、阅读WinSock编程指南;3、阅读本实验所附内容; 4、熟悉Eclipse开发工具。三、实验内容使用Win32 Socket 函数实现聊天程序:能相互对发文本消息。四、实验步骤和实验源程序 实验步骤: 1、打开java设计软件Elipse,分别建立两个新工程,取名为TalkProject; 2、在刚建立的工程下建里两个类ChatServer和ChatClient; 3、在两个类下分别编写源程序,利用Socket实现聊天软件; 4、运行服务器程序后,再运行客户端程序,就可以实现聊天了。实验源代码: ChatServer:import java.io.*;import .*;import java.util.*;public class ChatServer boolean started = false;ServerSocket ss = null;List<Client> clients =Collections.synchronizedList(new ArrayList<Client>();/List<Client> clients =Collections.synchronized(new ArrayList<Client>();/clients是共享变量,通过Collections.synchronized()做同步化处理public static void main(String args) new ChatServer().start();public void start() try ss = new ServerSocket(8888); / 创建一个监听Socket对象started = true; catch (IOException e) e.printStackTrace();try while (started) Socket s = ss.accept(); / 等待客户端发起连接Client c = new Client(s);System.out.println("a client connected!");new Thread(c).start(); / 启动线程clients.add(c); / 向共享变量中添加ss.close(); / 关闭Socket catch (IOException e) e.printStackTrace();class Client implements Runnable / 实现Runnable接口private Socket s;private DataInputStream dis = null;private DataOutputStream dos = null;private boolean Connected = false;public Client(Socket s) this.s = s;try dis = new DataInputStream(s.getInputStream(); / 创建输入流dos = new DataOutputStream(s.getOutputStream(); / 创建输出流Connected = true; catch (IOException e) e.printStackTrace();public void send(String str) try dos.writeUTF(str); / 向输入流中写入数据 catch (IOException e) clients.remove(this); / 出错时(客户可能已断线),移除一个客户端public void run() try while (Connected) String str = dis.readUTF(); / 从输出流中读取数据 synchronized(clients) / 对共享的列表进行遍历时必须要同步化Iterator<Client> it = clients.iterator();/ 返回一个迭代器while(it.hasNext() Client c = it.next();c.send(str);/ 将数据发送出去/while /synchronized /while(Connected)dis.close();/ 关闭输入流dos.close();/ 关闭输出流s.close();/ 关闭Socket catch (Exception e) System.out.println("Client closed!"); finally clients.remove(this); / 确保线程结束时从共享变量中删除自己(比如从客户机读数据时出错, / 客户机可能已掉线,线程会结束) /try/runChatClient:import java.awt.*;import java.awt.event.*;import java.io.*;import .*;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JButton;public class ChatClient extends Frame Socket s = null;DataOutputStream dos = null;DataInputStream dis = null;private boolean Connected = false;TextField tf = new TextField();TextArea ta1 = new TextArea();TextArea ta2 = new TextArea();Button bt1 = new Button("发送");Thread thread = new Thread(new ClientThread();/ 创建线程public static void main(String args) new ChatClient().call();public void call() bt1.setBackground(Color.cyan);setLocation(400, 300);setSize(400, 300);setLayout(null);/ 取消布局管理器setBackground(Color.cyan);tf.setBounds(250, 40, 70, 25);ta1.setBounds(30, 40, 200, 80);ta2.setBounds(30, 140, 200, 80);bt1.setBounds(265, 250, 70, 30);tf.setBounds(30, 240, 200, 35);tf.addActionListener(new MyListener();/ 注册事件监听器add(tf);add(bt1);add(ta1);add(ta2);add(tf);this.addWindowListener(new WindowAdapter() / 关闭窗口public void windowClosing(WindowEvent e) disconnect();System.exit(0););bt1.addActionListener(new MyListener();/ 注册事件监听器setVisible(true);connect();thread.start();/ 启动线程public void connect() try s = new Socket("127.0.0.1", 8888);dos = new DataOutputStream(s.getOutputStream();/ 返回一个输出流dis = new DataInputStream(s.getInputStream();/ 返回一个输入流System.out.println("connected!");Connected = true; catch (Exception e) e.printStackTrace(); public void disconnect() try dos.close();/ 关闭输出流dis.close();/ 关闭输入流s.close();/ 关闭Socket catch (IOException e) e.printStackTrace();private class MyListener implements ActionListener public void actionPerformed(ActionEvent e) String str = tf.getText().trim();/ 获取文本框中的数据tf.setText("");ta2.append(str+"n");/ 将文本框中的数据添加到文本区中try dos.writeUTF(str);/ 向输出流中写入数据dos.flush();/ 刷空流 catch (IOException e1) e1.printStackTrace();private class ClientThread implements Runnable public void run() try while (Connected) String str = dis.readUTF();/ 从输出流中读取数据ta1.append(str+"n"); catch (Exception e) e.printStackTrace();六、实验小结。专心-专注-专业

    注意事项

    本文(网络SOCKET编程报告(共6页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开