通信服务器器端的实现

通信——服务器的实现
[b]技术实现[/b]1:
主程序里面创建一个服务器套接字,并绑定指定的端口其中port是端口号
ServerSocket ss=new ServerSocket (port);
2:
另外建立一个ServerThead 类来继承线程~~让每一个客户端在服务器都有一个线程来单独处理~~
public class ServerThead extends Thread{
Socket s;
public OutputStream output;
public ServerThead(Socket s){
this.s=s;
}
public void run(){
try {
//得到与客户端连接的输入输出流当然也可以包装成Datainputstream和Dataoutputstream
InputStream input = s.getInputStream();
output = s.getOutputStream();

String str="请先输入您的名字:";
System.out.print("请先输入您的名字:");
还有~~GB2312,GBK,UTF-8,ISO-8859-1.....
byte[] bytes = str.getBytes("GBK");
output.write(bytes);

name=LineString(input);
jc.addItem(name);
Data.list.add(this);///添加在列表中~~~

while(true){
// int n =input.read();
//
// System.out.println((char)n);
String st=LineString(input);
if("bye".equals(st)||remove){
break;
}
else{
System.out.println(name+"说:~~~"+st);
}
}

String stra="you have left~~~~~~~~~~Bye~Bye";
byte [] b=stra.getBytes();
output.write(b);

s.close();
output.close();
System.out.println("关闭了~~");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//读取一行字符的方法
private String LineString(InputStream input) throws IOException{
字节字符输出流~~和那个字节数组队列差不多~~当做队列吧
ByteArrayOutputStream baos=new ByteArrayOutputStream ();

while(true){
int n=input.read();
///若为换行~~就跳出循环~~
if(n=='\r'){
continue;
}
if(n=='\n'){
break;
}
baos.write(n);
}
byte []bytes=baos.toByteArray();
String ss=new String(bytes,"GBK");
return ss;
}
}
[b]在主程序的里面用如下的代码来接收每一个连接的客户端,并且将每一个客户端交给[/b]ServerThead 的线程来处理~~
while(true){
//接收客户端的访问~此程序在有客户访问前是一直在堵塞在这里的
Socket s=ss.accept();
//新建一个线程处理客户端的访问~程序会阻塞在这里
//这样就可以丢给每一个线程去完成~~
//因此可以被多个客户访问
ServerThead st=new ServerThead(s);
System.out.println("有人访问了");
///也可以将每一个用户保存在一个队列中去
DATA.list.add(st);
st.start();
}

以上就可以实现与多个客户端连接的和服务器聊天的程序了~
[b]总结:[/b]
建立服务器的套接字。记得要用每一个线程来处理每一个连接上的客户端~这样就可以实现多个客户端之间的通信了
当然是实现了服务器端的通信(聊天吧)
现在我们需要去实现客户端和文件的交流啊~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值