📄 peoplethread.java~76~
字号:
import java.net.*;
import java.io.*;
import java.util.*;
public class PeopleThread implements Runnable{
ServerSocket sendFileSocket=null;
Socket socket=null;
DataInputStream dis;
File toSendFile;
Hashtable saveThread=new Hashtable();
static Hashtable saveServerSocket=new Hashtable();
String key=null;
String toPeople=null;
String _message=null;
static int state=1;
//int state2=1;
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));
if(ChatArea.getSocket()!=null){
ChatArea.getOut().writeUTF("SEND_FILE:"+toSendFile+"#TOPEOPLE#"+toPeople+"#PORT#"+port+"#FILE_LENGTH#"+toSendFile.length());
// System.out.println("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) {
//System.out.println(socket.getPort()+"dui fang port");
try {
dis = new DataInputStream(socket.getInputStream());
while (true) {
_message = dis.readUTF();
//System.out.println(_message);
break;
}
}
catch (Exception e) {
}
// System.out.println(_message);
if (_message.startsWith("AGREE_ACCEPT:")) {
String _toPeople = _message.substring(_message.indexOf(
"AGREE_ACCEPT:") + 13, _message.indexOf("#TOSENDFILE#"));
String _toSendFile = _message.substring(_message.indexOf(
"#TOSENDFILE#") + 12);
//System.out.println(_requestPeople + " " + _toSendFile);
ClientSendFileThread clientSendFileThread=new ClientSendFileThread(new File(_toSendFile),_toPeople,socket);
clientSendFileThread.start();
}else if(_message.startsWith("DISAGREE_ACCEPT:")){
String _toPeople=_message.substring(_message.indexOf("DISAGREE_ACCEPT:")+16,_message.indexOf("#TOSENDFILE#"));
String _toSendFile=_message.substring(_message.indexOf("#TOSENDFILE#")+12);
System.out.println(_message);
try{
this.dis.close();
this.socket.close();
}catch(Exception e){
}
}
}
// }
}
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 + -