山东科技大学学生课程设计
}
if(e.getSource()==send)//发送内容 { String s=inputContent.getText(); if(s!=null)
{ try { out.writeUTF(\聊天内容:\+name+\+s); }
catch(IOException e1){} } } }
public void run()//线程对象调度之后所执行的操作 { String s=null; while(true)
{ try{ s=in.readUTF();//读取服务器发来的消息,堵塞状态 chatResult.append(\+s); }
catch(IOException e)
{ chatResult.setText(\与服务器已断开\); try { socket.close(); }
catch(Exception exp) {} break; } } } }
3.3.3 服务器端
public class ChatServer
{ public static void main(String args[])
7
山东科技大学学生课程设计
{ ServerSocket server=null;//等待接收客户的套接字的ServerSocket对象 Socket you=null;
Hashtable peopleList; peopleList=new Hashtable(); while(true)
{ try { server=new ServerSocket(666);//端口号 }
catch(IOException e1)
{ System.out.println(\正在监听\); }
try { you=server.accept();//接收客户的套接字连接呼叫
InetAddress address=you.getInetAddress(); System.out.println(\客户的IP:\+address); }
catch (IOException e) {} if(you!=null)
{ Server_thread peopleThread=new Server_thread(you,peopleList);
peopleThread.start(); //客户线程 }
else { continue; } } } }
class Server_thread extends Thread//服务线程 { String name=null; Socket socket=null;
8
山东科技大学学生课程设计
File file=null;
DataOutputStream out=null; DataInputStream in=null; Hashtable peopleList=null;
Server_thread(Socket t,Hashtable list)//构造 { peopleList=list; socket=t; try { in=new
DataInputStream(socket.getInputStream()); out=new
DataOutputStream(socket.getOutputStream()); }
catch (IOException e) {}
}
4 调试分析
4.1 遇到的问题
1、图形用户界面设计按钮和文本框设计中的按钮上的事件处理问题。 解决:通过java程序设计教程中的事件和事件处理知道了具体事件的处理是使用事件对应的监听者接口中所提供的抽象方法,这些方法需要重新定义,例如本程序中的public void actionPerformed(ActionEvent e),该方法用来对发生在按钮上事件的处理。 2、输入流和输出流的问题。
解决:InputStreamReader缓冲处理流通信双方需要建立Socket连接,本程序中Socket包含两个流一个输出流向外发送数据,一个输入流接收数据。 3、监听端口的问题。
解决:通过Socket应用方面的知识知道了监听端口是引用Socket构造方法,指定了服务器程序中其监听的端口,还需抛出异常。
9
山东科技大学学生课程设计
4.2 测试结果分析
本次设计在调试过程中出现了许多问题,其中,最为严重的错误就是在最初的程序中,并没有将异常处理加入到程序中去,所以在程序运行时出现了许多错误,后来经过同学的帮助和查阅资料,我将异常处理加入到了代码中,也就没有大的问题。异常处理对程序是很重要的,加入异常处理有益于我们找到自己的错误,同时异常处理也能够将语句使用程序处理错误的能力,有效的提高了我们完成程序的效率。
5 用户使用说明
1、首先运行服务器端,正在监听。
2、运行客户端,输入昵称,并连接服务器,并发送消息。
10
山东科技大学学生课程设计
3、运行多个客户端,实现群聊。
11