📄 usertoserver.java
字号:
/*
* Created on 2004-12-29
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
/**
* @author mq
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.io.*;
import java.net.*;
public class UserToServer extends Thread {
Pair pair;
byte[] buffer = new byte[1024];
char[] request= new char[1024];
char[] dest = new char[ 32];
InetAddress inetaddress;
public UserToServer(Pair pair)
{
this.pair = pair;
}
public void run()
{
while(pair.isConnectedToUserOK && !pair.ProxyToUser.isClosed())
{
boolean status = true;
try
{
Socket s = pair.ProxyToUser;
InputStream input = s.getInputStream();
int len = input.read(buffer);
if(len == 0) {
status = false;
}
else {
for(int i =0;i <len; i++)
{
request[i] = (char)buffer[i];
}
request[len] = '\0';
//Message.show(request);
if(!ResolveInfo(request)) {
status = false;
}
else if(!ConnectToServer()) {
status = false;
}
else {
ShareBuffer sharebuffer = new ShareBuffer();
ServerToProxy servertoproxy = new ServerToProxy(pair,sharebuffer);
servertoproxy.start();
ProxyToUser proxytouser = new ProxyToUser(pair,sharebuffer);
proxytouser.start();
}
}
}
catch (Exception e)
{
e.printStackTrace();
status = false;
}
if(!status)
{
//Message.show("usertoserver thread is ended.");
try
{
pair.ProxyToUser.close();
pair.isConnectedToUserOK = false;
}
catch (Exception e)
{
e.printStackTrace();
}
break;
}
//
}
}
public boolean ResolveInfo(char[] info)
{
boolean first =false,sencond =false,third =false;
boolean status =true;
int j =0;
for(int i =0;i <1024; i++)
{
if(info[i] == '/')
{
if(!first)
{
first = true;
continue;
}
if(!sencond)
{
sencond = true;
continue;
}
if(!third)
{
third = true;
break;
}
}
else
{
if(sencond && !third)
{
if(info[i] != ' ')
{
dest[j] = info[i];
j ++;
}
}
}
}
dest[j] = '\0';
String addr = new String(dest);
Message.show("用户请求:" + addr);
try
{
if(dest[0]>'1' && dest[0]<'9') {
inetaddress = InetAddress.getByAddress(addr.getBytes());
}
else {
inetaddress = InetAddress.getByName(addr);
}
//Message.show(inetaddress.getAddress());
}
catch (Exception e)
{
e.printStackTrace();
status = false;
}
return status;
}
public boolean ConnectToServer()
{
boolean status = true;
try
{
Socket s = new Socket(inetaddress,80);
pair.ProxyToServer = s;
pair.isConnectedToServerOk = true;
OutputStream output = s.getOutputStream();
output.write(buffer);
output.flush();
}
catch (Exception e)
{
e.printStackTrace();
status = false;
}
if(status)
{
Message.show("Connect to server " + inetaddress.toString() +" ok");
}
else
{
Message.show("Connect to server " + inetaddress.toString() +" failed");
}
return status;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -