欢迎来到天天文库
浏览记录
ID:57428330
大小:69.50 KB
页数:8页
时间:2020-08-17
《网络实验6Socket编程实现聊天程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、南昌航空大学实验报告课程名称:计算机网络实验名称:Socket编程实现聊天程序 班级:班学生姓名:杨望学号:指导教师评定:签名:一、实验目的:1、掌握网络应用程序的开发方法;2、掌握Client/Server结构软件的设计与开发方法3、掌握Socket机制的工作原理。二、实验题目:使用Win32Socket函数实现聊天程序:能相互对发文本消息。三、服务端与客户端连接工作流程图: 开始 监听有新客户端请求连接服务器提示错误信息不允许 建立连接 允许允许连接?更新用户信息表四、收发消息工作流程图:监听发送给客户端B是用户B在上线?用户B在忙碌?用户B在隐身?是是用户B在离线?发送给服
2、务器否向客户端B发送消息五、实验代码:1、服务器端:packageyuchen;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.StringTokenizer;importjava.util.Vector;publicclassChatServer{staticintport=5
3、566;//端口号staticVectorclients=newVector(10);//存储连接客户信息staticServerSocketserver=null;//建立服务器socketstaticSocketsocket=null;//套接字连接publicChatServer(){try{System.out.println("Serverstart...");server=newServerSocket(port);//初始化服务器套接字while(true){socket=server.accept();//等待连接System.out.
4、println(socket.getInetAddress()+"连接");//得到客户机地址Clientclient=newClient(socket);clients.add(client);//增加客户线程到向量中client.start();//启动线程notifyChatRoom();//监视聊天室连接变化}}catch(Exceptionex){ex.printStackTrace();//输出出错信息}}publicstaticvoidnotifyChatRoom(){//监视客户端线程StringBuffernewUser=newStringBuffer("new
5、User");for(inti=0;i6、d(message);//发送信息}}publicvoidcloseAll(){//关闭所有连接while(clients.size()>0){//遍历整个VectorClientclient=(Client)clients.firstElement();//得到一个客户端try{client.socket.close();}catch(IOExceptionex){ex.printStackTrace();//输出错误信息}clients.removeElement(client);//移出客户端}}publicstaticvoiddisconnect(Clientc){//断开客7、户端try{System.err.println(c.ip+"断开连接");}catch(Exceptionex){ex.printStackTrace();}clients.removeElement(c);c.socket=null;}publicstaticvoidmain(String[]args){newChatServer();}classClientextendsThread{Socketsocket;//连接端口Stringname;/
6、d(message);//发送信息}}publicvoidcloseAll(){//关闭所有连接while(clients.size()>0){//遍历整个VectorClientclient=(Client)clients.firstElement();//得到一个客户端try{client.socket.close();}catch(IOExceptionex){ex.printStackTrace();//输出错误信息}clients.removeElement(client);//移出客户端}}publicstaticvoiddisconnect(Clientc){//断开客
7、户端try{System.err.println(c.ip+"断开连接");}catch(Exceptionex){ex.printStackTrace();}clients.removeElement(c);c.socket=null;}publicstaticvoidmain(String[]args){newChatServer();}classClientextendsThread{Socketsocket;//连接端口Stringname;/
此文档下载收益归作者所有