欢迎来到天天文库
浏览记录
ID:796044
大小:210.53 KB
页数:24页
时间:2017-09-05
《java tcp socket聊天系统模型》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、TcpSocekt通信模型TcpSocket是面向连接的,所以Server端的accept()方法,一直等着客户端的连接,如果连接成功,则两者进行通信,这种是同步的,因为accept()一直在那儿等着,时刻的等着,实际中的聊天系统是采用异步方式,当有请求的时候就调用accept()方法,没有请求的时候该做什么就做什么去,不需要在那儿等着,不浪费资源,一种异步的方式。这个例子只是为了学习线程而准备的。端口有TCP端口和UDP端口两种,端口号都是从0到65535,TCP端口在3层,UDP不是四层就是7层TCP和U
2、DP的协议也不相同,TCP比UDP安全,更多TCP和UDP区别上google,baidu。服务器端编码Java代码1.import java.io.BufferedReader; 2.import java.io.IOException; 3.import java.io.InputStreamReader; 4.import java.io.PrintStream; 5.import java.net.ServerSocket; 6.import java.net.Socket; 7.impor
3、t java.util.StringTokenizer; 8.import java.util.Vector; 9. 10./** 11. * 服务器端编码 12. * @author 欧阳平 2009-3-17 13. */ 14.public class ChatServer { 15. static int port = 5566;//端口号 16. static Vector clients = new Vector(10);//存储连接客户信
4、息 17. static ServerSocket server = null; //建立服务器socket 18. static Socket socket = null; //套接字连接 19. /** 20. * Constructs 21. */ 22. public ChatServer() { 23. try { 1. System.out.println("Server start..."); 2.
5、 server = new ServerSocket(port); //初始化服务器套接字 3. while (true) { 4. socket = server.accept(); //等待连接 5. System.out.println(socket.getInetAddress()+"连接");//得到客户机地址 6. Client client = new Cl
6、ient(socket); //实例化一个客户线程(其中线程Client中有Socket,这里的的Socket只是起个过度作用) 7. // 8. clients.add(client);//增加客户线程到向量中 9. client.start();//启动线程 10. notifyChatRoom(); //监视聊天室连接变化 11. } 12.
7、 } catch (Exception ex) { 13. ex.printStackTrace();//输出出错信息 14. } 15. } 16. 17. public static void notifyChatRoom() { //监视客户端线程 18. StringBuffer newUser = new StringBuffer("newUser"); 19. for (int i = 0; i
8、< clients.size(); i++) { 20. Client c = (Client)clients.elementAt(i); 21. newUser.append(":"+c.name); //客户端姓名字符串 22. } 23. sendClients(newUser);//发送信息到客户端 24.
此文档下载收益归作者所有