📄 dealwithserver.java
字号:
import java.io.IOException;
import java.net.*;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class DealwithServer {
ArrayList<String> namearray=new ArrayList<String>();
ArrayList<InetAddress> iparray=new ArrayList<InetAddress>();
ArrayList<Integer> portarray=new ArrayList<Integer>();
DatagramSocket socket;
InetAddress ip;
Integer port;
String temp;
public DealwithServer(){
try {
socket=new DatagramSocket(8080);
} catch (SocketException e) {
System.out.println("怎么回事啊?");
e.printStackTrace();
}
}
public String[] dealwithPacket(DatagramPacket packet){
String s1=new String(packet.getData(),0,packet.getLength());
StringTokenizer s=new StringTokenizer(s1,"#");
String[] record=new String[6];
ip=packet.getAddress();
port=packet.getPort();
int i=0;
for(;s.hasMoreTokens();i++){
record[i]=s.nextToken();
}
if(record[0].equals("3")&&i>2)
for(int k=2;k<i;k++)
record[1]=record[1]+"#"+record[k];
if(record[0].equals("2")&&i>4)
for(int k=4;k<i;k++)
record[3]=record[3]+"#"+record[k];
return record;
}
public void dealwithLogin(String s){ //记录用户登陆信息并更新!
namearray.add(s);
iparray.add(ip);
portarray.add(port);
String temp="1#"+s;
sentGroupInfo(temp);
}
public void sentPriInfo(String[] s){ //送出私聊内容!
try {
String temp="2#"+s[1]+"悄悄地对你说: "+s[3];
byte buf[]=temp.getBytes();
int i=namearray.indexOf(s[2]);
DatagramPacket dp=new DatagramPacket(buf,buf.length,getClientip(i),getClientport(i));
socket.send(dp);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void deleteClient(String s){ //删除用户信息并通知其它用户!
int i=namearray.indexOf(s);
namearray.remove(i);
iparray.remove(i);
portarray.remove(i);
String temp="4#"+s;
sentGroupInfo(temp);
}
public void sentClientInfo(String s){
try {
for(int j=0;j<namearray.size();j++){
String temp="1#"+namearray.get(j);
byte[] buf=temp.getBytes();
int i=namearray.indexOf(s);
DatagramPacket dp=new DatagramPacket(buf,buf.length,getClientip(i),getClientport(i));
socket.send(dp);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void receivePacket(){
byte buf[]=new byte[256];
DatagramPacket r=new DatagramPacket(buf,buf.length);
try {
socket.receive(r);
} catch (IOException e) {
e.printStackTrace();
}
String record[]=dealwithPacket(r);
if(record[0].equals("1")){
if(!ismember(record[1])){
sentAssureInfo();
dealwithLogin(record[1]);
sentClientInfo(record[1]);
}
else
sentDenyInfo();
}
else if(record[0].equals("2")){
sentPriInfo(record);
}
else if(record[0].equals("4")){
deleteClient(record[1]);
}
else if(record[0].equals("3"))
sentGroupInfo( "3#"+record[1]);
}
private void sentAssureInfo(){
try {
String temp="0#1";
byte[] buf=temp.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,ip,port);
socket.send(dp);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void sentDenyInfo(){
try {
String temp="0#0";
byte[] buf=temp.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,ip,port);
socket.send(dp);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private boolean ismember(String s ){
for(int i=0;i<namearray.size();i++)
{
if(namearray.get(i).equals(s))
return true;
}
return false;
}
private InetAddress getClientip(int i) throws UnknownHostException{
return iparray.get(i);
}
private int getClientport(int i){
return portarray.get(i).intValue();
}
private void sentGroupInfo(String s){
try {
byte buf []=s.getBytes();
for(int i=0;i<namearray.size();i++){
DatagramPacket dp=new DatagramPacket(buf,buf.length,getClientip(i),getClientport(i));
socket.send(dp);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -