📄 peoplethread.java~23~
字号:
package chat;
import java.net.*;
import java.io.*;
import java.util.*;
/**
*
* <p>Title:发送对象线程类 </p>
* <p>Description: 根据发送对象创建服务套接,等待对方连接</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class PeopleThread implements Runnable{
ServerSocket sendFileSocket=null;//发送文件服务套接
Socket socket=null;
DataInputStream dis;
File toSendFile;
Hashtable saveThread=new Hashtable();//存储当前线程的hashtable
static Hashtable saveServerSocket=new Hashtable();
String key=null;
String toPeople=null;
String _message=null;
static int state=1;
//int state2=1;
/**
*
* @param file File 要发送的文件对象
* @param toPeople String 要发送的对象
*/
public PeopleThread(File file,String toPeople){
this.toSendFile=file;
this.toPeople=toPeople;
//System.out.println(toSendFile.length()+"k"+" "+toPeople+"duixiang");
}
public void run(){//线程执行体
boolean isExist=saveServerSocket.containsKey(toPeople);
//if (!isExist) {
int port = PeopleThread.selectPort();//取得空闲端口
//System.out.println(port);
try {
sendFileSocket = new ServerSocket(port);//打开服务套接
saveServerSocket.put(toPeople, new Integer(port));//把端口存入hashtable
if(ChatArea.getSocket()!=null){
ChatArea.getOut().writeUTF("SEND_FILE:"+toSendFile+"#TOPEOPLE#"+toPeople+"#PORT#"+port+"#FILE_LENGTH#"+toSendFile.length());
}
//socket = sendFileSocket.accept();
//System.out.println("1");
}
catch (IOException e) {
//e.printStackTrace();
//System.out.println("snd");
}
//}
/* else {
System.out.println("else");
//state2=0;
int port=((Integer)saveServerSocket.get(toPeople)).intValue();
try{
if (ChatArea.getSocket() != null) {
ChatArea.getOut().writeUTF("SEND_FILE:" + toSendFile + "#TOPEOPLE#" +
toPeople + "#PORT#" + port);
sendFileSocket = new ServerSocket(port);
}
}catch(Exception e){
System.out.println("正在侦听2");
/*try{
socket = sendFileSocket.accept();
}catch(Exception e1){
System.out.println("catching");
e1.printStackTrace();
}*/
// }
/* try{
sendFileSocket = new ServerSocket(port);
}catch(IOException e){
System.out.println("正在侦听...");
System.out.println("2");
//e.printStackTrace();
}*/
//发送通知
//}
//System.out.println(state);
while(true){
// if (state == 1) {
try {
// System.out.println("before accept");
//state = 0;
socket = sendFileSocket.accept();
//state = 1;
//state2=1;
//System.out.println("第二分文件");
}
catch (IOException e) {
//System.out.println("accept");
//e.printStackTrace();
}
// }
if (socket != null) {
ClientSendFileThread clientSendFileThread=new ClientSendFileThread(socket);
clientSendFileThread.start();
}
}
}
public static int selectPort(){
int port;
for(int i=4000;i<4100;i++){
try {
ServerSocket serversocket = new ServerSocket(i);
//port=i;
serversocket.close();
return i;
}
catch (IOException e) {
//System.out.println("端口被占用");
}
}
return 0;
}
public static void main(String[] args) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -