实例70CS结构聊天室

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实例70 C/S结构聊天室

通过前面的简短学习,下面用TCP/IP协议里的套接字(Socket)编程接口来实现一个聊天室.

编程要点

socket是一种流式通信机制,是一种基于连接的通信,即,在通信之前通信双方确认身份并建立一条专用的虚拟连接通道,然后他们通过这条通道传送数据信息进行通信,当通信结束时再将原来所建的连接拆除.本例有一个客户端程序MyClient.java和一个服务器端程序Server.java. 服务器端创建对象ServerSocket使他在某端口提供监听服务, 一旦客户端创建Socket对象向监听窗口请求,服务器接收这个请求就会建立socket连接.

运行MyClient和Server程序:

监听器窗口:

客户端窗体,输入”Hello”:

服务器端窗口信息:

----------------------------------------MyClient.java源代码---------------------------------------------- import java.awt.*;

import java.awt.event.*;

import .*;

import java.io.*;

//client端的程序:

public class MyClient extends Frame implements ActionListener,ItemListener

{

MenuBar m_Menu_Bar;

Menu menuFile,menuEdit,menuHelp;

MenuItem mi_File_Open,mi_File_Close,mi_File_Exit,mi_Edit_Copy,mi_Edit_Paste;

MenuItem pi_New,pi_Del,pi_Pro,mi_Help_Sub;

CheckboxMenuItem mi_Edit_Cut;

PopupMenu popM;

Socket ClientSocket;

PrintStream os;

DataInputStream is;

String s;

Label MyLabel=new Label(" ☆欢迎使用本系统为您提供服务☆");

TextArea textarea;

// 发送消息按钮

Button MyButton=new Button("发送消息");

public MyClient()

{

setTitle("Client Window(客户端窗口)");

setLayout(new BorderLayout());

// 给窗体添加监听器

this.addWindowListener(new WinAdptClient(this));

// 给发送按钮设置添加事件监听器

MyButton.addActionListener(this);

// 界面设计,添加下拉菜单和弹出菜单等

textarea=new TextArea(13,55);

popM=new PopupMenu();

pi_New=new MenuItem(" 新建 ");

pi_New.addActionListener(this);

popM.add(pi_New);

pi_Del=new MenuItem(" 删除 ");

pi_Del.addActionListener(this);

popM.add(pi_Del);

pi_Pro=new MenuItem(" 属性 ");

pi_Pro.addActionListener(this);

popM.add(pi_Pro);

m_Menu_Bar=new MenuBar();

menuFile=new Menu("文件");

mi_File_Open=new MenuItem("打开");

mi_File_Open.setShortcut(new MenuShortcut('f'));

mi_File_Close=new MenuItem("关闭",new MenuShortcut('s'));

mi_File_Exit=new MenuItem("退出",new MenuShortcut('x'));

mi_File_Open.setActionCommand("打开");

mi_File_Close.setActionCommand("关闭");

mi_File_Exit.setActionCommand("退出");

mi_File_Open.addActionListener(this);

mi_File_Close.addActionListener(this);

mi_File_Exit.addActionListener(this);

menuFile.add(mi_File_Open);

menuFile.add(mi_File_Close);

menuFile.add(mi_File_Exit);

m_Menu_Bar.add(menuFile);

menuEdit=new Menu("编辑");

mi_Edit_Copy=new MenuItem("复制");

mi_Edit_Paste=new MenuItem("粘贴");

mi_Edit_Cut=new CheckboxMenuItem("CUT");

mi_Edit_Copy.setActionCommand("复制");

mi_Edit_Paste.setActionCommand("粘贴");

mi_Edit_Copy.addActionListener(this);

mi_Edit_Paste.addActionListener(this);

mi_Edit_Cut.addItemListener(this);

menuEdit.add(mi_Edit_Copy);

menuEdit.add(mi_Edit_Paste);

menuEdit.addSeparator();

menuEdit.add(mi_Edit_Cut);

m_Menu_Bar.add(menuEdit);

menuHelp=new Menu("帮助");

mi_Help_Sub=new MenuItem("主题");

相关文档
最新文档