📄 talkerthread.java
字号:
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Map;
public class TalkerThread extends Thread
{
Socket socket;
HashMap<String,Socket> talkerList;
public TalkerThread(Socket s,HashMap<String,Socket> talkerList)
{
socket = s;
this.talkerList=talkerList;
}
public void run()
{
try
{
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String message = null;
while ((message = in.readLine())!=null)
{
int index1 = message.indexOf("{");
int index2 = message.indexOf("}");
int index3 = message.indexOf("-");
int index4 = message.indexOf(' ');
Set set = talkerList.keySet();
String name = null;
if(message.startsWith("talker"))
{
name = message.substring(index4+1,message.length()).trim();
if(!set.contains(name))
{
talkerList.put(name,socket);
out.println("Hello "+name);
System.out.println(name+" has entered");
System.out.println("There are "+talkerList.size()+" talkers now");
}
else
{
out.println(name+" you hava already entered!");
}
}
else if(message.startsWith("exit"))
{
Iterator iter = talkerList.keySet().iterator();
while(iter.hasNext())
{
Socket skt = (Socket)(talkerList.get(iter.next()));
out = new PrintWriter(skt.getOutputStream(),true);
out.println(name+"has left.");
}
talkerList.remove(name);
}
else if((index1==-1)&&(index2==-1))
{
String content = (message.substring(index3+1,message.length())).trim();
Iterator iter = talkerList.keySet().iterator();
while(iter.hasNext())
{
Socket skt = (Socket)(talkerList.get(iter.next()));
out = new PrintWriter(skt.getOutputStream(),true);
out.println(content);
}
}
else
{
String peername = (message.substring(index1+1,index2)).trim();
String content = (message.substring(index3+1,message.length())).trim();
if(set.contains(peername))
{
Socket skt = (Socket)(talkerList.get(peername));
out = new PrintWriter(skt.getOutputStream(),true);
out.println(content);
}
else
{ out.println("Sorry, this user does not exit at this moment!");}
}
//RECEIVED = false;
}
out.close();
in.close();
socket.close();
}
catch (IOException exc)
{
exc.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -