JAVA实验报告4-远程数据传输(3)

2025-07-19

*

* @throws java.lang.Exception */

private void jbInit() throws Exception { contentPane = (JPanel) getContentPane(); contentPane.setLayout(null); setTitle(\聊天界面\

this.setResizable(false);

setSize(new Dimension(602, 515)); frame.setVisible(true);

jScrollPane1.setBounds(new Rectangle(2, 2, 445, 320)); jScrollPane2.setBounds(new Rectangle(1, 333, 448, 95)); jButton1.setBounds(new Rectangle(93, 441, 78, 31)); jButton1.setText(\发送\

jButton2.setBounds(new Rectangle(185, 441, 76, 31)); jButton2.setText(\清空\

jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this)); jTextArea1.setEditable(false);

jScrollPane3.setBounds(new Rectangle(458, 6, 139, 424));

jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this)); jTextArea2.addKeyListener(new Frame1_jTextArea2_keyAdapter(this)); contentPane.add(jScrollPane2);

jScrollPane2.getViewport().add(jTextArea2); contentPane.add(jScrollPane1, null);

jScrollPane1.getViewport().add(jTextArea1); contentPane.add(jScrollPane3); contentPane.add(jButton1); contentPane.add(jButton2);

jScrollPane3.getViewport().add(jList1); this.setVisible(false); try {

InetAddress address=InetAddress.getLocalHost();

socket = new Socket(address.getHostAddress(), port); in = new DataInputStream(socket.getInputStream());

out = new DataOutputStream(socket.getOutputStream()); } catch (Exception e) { setVisible(true);

jTextArea2.setText(\无法与服务器联接,请退出...\}

if (thread == null) {

thread = new Thread(this); thread.start(); }

frame.setClection(socket, in, out);

}

public boolean setClection1() {

frame.setClection(socket, in, out); return frame.bool; }

public void setClection2() { wenBen = jTextArea2.getText(); if (wenBen.equals(\

jTextArea2.setText(\return; }

try {

out.writeUTF(frame.name + \jTextArea2.setText(\} catch (Exception ee) { } }

public void run() { String sl = null; String ss = null; String s = null; while (true) { try {

sl = in.readUTF();

} catch (Exception ee) { vector.removeAllElements(); jList1.setListData(vector);

jTextArea2.setText(\巳经与服务器断开...\return; }

if(sl.startsWith(\可以注册\frame.setVisible(false); setVisible(true);

setTitle(\昵称...\(见教材) }

else if(sl.startsWith(\该用户名已注册\

frame.jTextField1.setText(\请重新输入昵称\continue; }

else if (sl.startsWith(\新用户\

StringTokenizer st = new StringTokenizer(sl, \ss = null; s = null;

ss = st.nextToken(); s = st.nextToken();

vector.addElement(s);

jList1.setListData(vector); continue; }

else if (sl.startsWith(\下线了\

StringTokenizer st = new StringTokenizer(sl, \ss = null; s = null;

ss = st.nextToken(); s = st.nextToken();

vector.removeElement(s); jList1.setListData(vector); continue; }

jTextArea1.append(sl + \} }

public void jButton1_actionPerformed(ActionEvent e) { setClection2(); }

public void jButton2_actionPerformed(ActionEvent e) { jTextArea1.setText(\}

public void jTextArea2_keyPressed(KeyEvent e) {

if(e.isControlDown() &&e.getKeyCode()==KeyEvent.VK_ENTER ){ setClection2(); } } }

class Frame1_jTextArea2_keyAdapter extends KeyAdapter { private Frame1 adaptee;

Frame1_jTextArea2_keyAdapter(Frame1 adaptee) { this.adaptee = adaptee; }

public void keyPressed(KeyEvent e) { adaptee.jTextArea2_keyPressed(e); } }

class Frame1_jButton2_actionAdapter implements ActionListener { private Frame1 adaptee;

Frame1_jButton2_actionAdapter(Frame1 adaptee) { this.adaptee = adaptee; }

public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e);

} }

class Frame1_jButton1_actionAdapter implements ActionListener { private Frame1 adaptee;

Frame1_jButton1_actionAdapter(Frame1 adaptee) { this.adaptee = adaptee; }

public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed((见教材)); } }

四、 结论

客户端/服务器模式程序设计中,服务器使用ServerSocket监听指定端口,端口可以随意指定,等待客户连接请求,客户连接以后,会话产生,完成会话后,关闭连接。客户端使用Socket对网络上某一个指定IP的服务器上的端口发出连接请求,一旦连接成功,打开会话,会话完成后,关闭Socket,客户端自身不需要指定端口,通常会临时、动态地分配一个1024以上的端口供其与服务器连接。

五、 问题与讨论

在网络上实际应用的聊天活动,并不是在客户端与服务器之间进行聊

天,而是在客户端之间进行聊天通信。服务器主程序监听一端口,等待客户接入,同时构造一个线程类,准备接管会话。当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。而线程将接收到的信息转给所有与之连接的客户。


JAVA实验报告4-远程数据传输(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中南大学商学院会计学系2024年春季MBA答辩安排

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219