📄 client.java
字号:
package client;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
public class Client extends Thread {
public Login login;
public String localname = null;
private Socket socket;
public clientGUI clientgui;
public String host="192.168.128.160";
public int port=8000;
private DataInputStream datain = null;
private DataOutputStream dataout = null;
private int localport = 0;
public udptalks udptalk = null;
public String[] mygroups;
public Map<String,String> onlinefriends;
public Map<String,Object> group1;
public Vector onlinevector;
public Vector downlinevector;
public Client(){
onlinefriends = new HashMap<String,String>();
group1 = new HashMap<String,Object>();
onlinevector = new Vector();
downlinevector = new Vector();
try {
socket = new Socket(host,port);
} catch (UnknownHostException e) {
System.out.println("unkown the hostcomputer");
} catch (IOException e) {
e.printStackTrace();
}
login = new Login(this);
login.setVisible(true);
InputStream input = null;
OutputStream output = null;
try {
input = socket.getInputStream();
output = socket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
datain = new DataInputStream(input);
dataout = new DataOutputStream(output);
}
public void sentmessage(String st){
if(!st.equals("")){
try {
dataout.writeUTF(st);
} catch (IOException e) {
System.out.println("发送失败");
}
}
}
public void run(){
boolean stop = false;
String st = null;
while(!stop){
try {
st = datain.readUTF();
} catch (IOException e) {
e.printStackTrace();
}
if(st.startsWith("登陆:")){ //判断收到的数据报是否是回复登陆的
String sr = st.substring(st.indexOf(":")+1);
if(!sr.equals("success")){
login.setError(sr);
}else{
localname = login.textlogin.getText().trim();
}
}
if(st.startsWith("在线好友:")){ //判断受到的数据报是否是发送在线好友列表的
System.out.println("收到好友列表"+st);
String fr = st.substring(st.indexOf(":")+1);
if(!fr.equals("")){
String []friend = fr.split(",");
for(int i = 0;i < friend.length; i++){
String []f = friend[i].split("/");
onlinefriends.put(f[0], f[1]+"/"+ f[2]);
onlinevector.add(f[0]);
System.out.println("好友名:"+f[0]+"网络地址:"+f[1]+"/"+f[2]);
}
}else{
}
}
if(st.startsWith("离线好友:")){ //判断收到的数据报是否是发送给该用户离线好友的列表
System.out.println("收到好友列表:::"+st);
String fr = st.substring(st.indexOf(":")+1);
if(!fr.equals("")){
String []friend = fr.split(",");
// strings = new String[friend.length];
for(int i = 0;i < friend.length; i++){
// System.out.println("好友名:"+friend[0]);
downlinevector.add(friend[i]);
System.out.println("离线好友名:"+friend[i]);
}
}
}
if(st.startsWith("群组:")){
System.out.println("收到群组:::"+st);
String groups = st.substring(st.indexOf(":")+1);
String[] group = groups.split("/");
mygroups = new String[group.length];
for(int i=0; i< group.length; i++){
Groupworks sock = null;
System.out.println("收到群组:"+group[i]);
mygroups[i] = group[i];
if(group[i].equals("1111")){
try {
sock = new Groupworks(InetAddress.getByName("239.255.8.0"),5858,localname);
new Thread(sock).start();
group1.put("1111",sock);
} catch (UnknownHostException ex) {
ex.printStackTrace();
}
}
if(group[i].equals("2222")){
try {
sock = new Groupworks(InetAddress.getByName("239.255.9.0"),5868,localname);
new Thread(sock).start();
group1.put("2222",sock);
} catch (UnknownHostException ex) {
ex.printStackTrace();
}
}
}
}
if(st.startsWith("注册:")){ //判断接收到的的数据报是否是 注册的成功信息
if(st.substring(st.indexOf(":")+1).equals("success")){
login.setError("注册成功");
login.textPassword.setText("");
}else{
login.setError("用户名已存在");
}
}
if(st.equals("end")){ //判断收到的数据报是否是服务器端的TCP数据报发送完成
try { System.out.println("关闭连接qqqaaaa");
// tal.printtalk("本地端口:"+socket.getLocalPort());
localport = socket.getLocalPort();
System.out.println("本地端口是:"+localport);
udptalk = new udptalks(localport,login.textlogin.getText().trim(),this); //开启UDP通信
udptalk.start();
clientgui = new clientGUI(this,udptalk,login.textlogin.getText().trim()); //产生UDP 通信的图形界面
login.setVisible(false);
socket.close();
} catch (IOException e) {
//e.printStackTrace();
}
stop = true;
}
}
}
public String[] getonline(){
int onlinesize = 0;
onlinesize = onlinevector.size();
String[] online = new String[onlinesize];
for(int i=0; i<onlinesize; i++){
System.out.println("在线用户aa:"+(String)onlinevector.get(i));
online[i] =(String)onlinevector.get(i);
}
return online;
}
public String[] getdownline(){
int downlinesize = 0;
downlinesize = downlinevector.size();
String[] downline = new String[downlinesize];
for(int i=0; i<downlinesize; i++){
downline[i] =(String)downlinevector.get(i);
System.out.println("离线线用户bb:"+(String)downlinevector.get(i));
}
return downline;
}
public static void main(String []args){
new Client().start();
}
public String gethost(){
return host;
}
public Map<String,String> getfriends(){
return onlinefriends;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -