QQ_MultiTalkServer
package test_teacher;
import java.net.*;
import java.io.*;
public class MultiTalkServer
{
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket = null;
boolean listening = true;
int clientNumber = 0;
try {
serverSocket = new ServerSocket(4444);
}
catch (IOException e){
System.err.println("Could not listen on port: 4444.");
System.exit(-1);
}
while (listening)
{
Socket socket;
socket = serverSocket.accept(); //程序将在此等候客户端的连接
clientNumber++;
new MultiTalkServerThread(socket, clientNumber).start();
}
serverSocket.close();
}
}
class MultiTalkServerThread extends Thread
{
private Socket socket = null;
private int clientNumber;
public MultiTalkServerThread(Socket socket, int clientNumber)
{
super("MultiTalkServerThread");
this.socket = socket;
this.clientNumber = clientNumber;
System.out.println("Accept Client" + clientNumber);
}
public void run()
{
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true); //auto flush
BufferedReader in = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
BufferedReader sin = new BufferedReader( new InputStreamReader( System.in ) );
String sinputLine, inputLine;
boolean sinbye = false;
boolean inbye = false;
inputLine = in.readLine();
System.out.println( "from Client" + clientNumber + ": " + inputLine );
while( true )
{
if(inputLine.equals("Bye."))
{
inbye = true;
sinbye = true;
sinputLine = "Bye.";
out.println(sinputLine);
out.flush();
System.out.println("Server: " + "Reply to client " + clientNumber +" : " + sinputLine);
}
else
{
sinputLine = "Reply to client " + clientNumber +" : " + inputLine;
out.println(sinputLine);
out.flush();
System.out.println("Server: " + sinputLine);
}
if( sinbye == true && inbye == true )
break;
if( inbye == false )
{
inputLine = in.readLine();
System.out.println( "form Client " + clientNumber + ": " + inputLine );
}
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
QQ_MultiTalkServer的更多相关文章
- django模型操作
Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表
随机推荐
- 在IIS中部署Asp.net Mvc
概述: 最近在做一个MVC 3的项目,在部署服务器时破费了一番功夫,特将过程整理下来,希望可以帮到大家! 本文主要介绍在IIS5.1.IIS6.0.IIS7.5中安装配置MVC 3的具体办法! 正文: ...
- smarty模板调数据库并做添加删除修改和分页
smarty模板只要就是实现分离效果所以每个功能都需要两个页面一个是HTML 和 PHP 两部分组成 使用smarty模板要在main文件夹下面创建login.php文本,要用smarty模板首先 ...
- input解决浏览器记住密码问题
<input type="password" name="" id="">可以这样写 <input type=" ...
- HTML初学者常用标签及属性
1.HTML5头部结构 [DOCTYPE html] 声明文档类型为HTML5文件. 文档声明在HTML5文档必不可少,且必须放在文档的第一行. [meta标签] 1-charset属性:单独 ...
- wemall app商城源码Android之Native(原生)支付模式一demo
wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享Native(原生)支付模式一demo,供技术 ...
- 1821: [JSOI2010]Group 部落划分 Group
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1308 Solved: 627[Su ...
- win8和ubuntu双系统
硬盘安装的话只要分够内存和做好开机启动项就好了,u盘安装要注意分区(挂载)了推荐: http://wenku.baidu.com/view/5052f19b51e79b8968022623.html ...
- javascript 随机显示指定内容
今天碰到一个需求,一个页面显示赞助厂商的信息,但是厂商要求排序要随机排,因为是个静态页面不是读取数据库的,所以打算用js来控制 var arr = new Array('张三', '李四', '王五' ...
- mybatis 使用@Select 注解,因为字符编码不一致导致mybatis 报错
使用 mybatis 的@Select 注解, @Select({ "<script>select " + ALL_COLUMNS + " from &quo ...
- (5)java中的常用API,其实就是一些常见类的使用
String方法来介绍 两种声明: 1.String str="1";这种首先检查常量池中是否已经有该常量字符串"1" 如果有的话,不会创建新的常量字符串,若有 ...