关于Socket的编程题!
用Eclipse写一个程序 ,把程序启动.例如程序的参数是新浪的IP(先在命令窗口中ping出来)和端口 然后我在浏览器中打localhost就直接跳转到新浪的网页上并把信息以Hex的形式打印在控制台上。
(有点跟IE浏览器浏览器连接设置里面的局域网(LAN)设置大致相同)
------解决方案--------------------
只要监听本机80端口就可以通过localhost访问,
在服务端通过java.net.url取得某地址的inputstream
把它写入socket的outputstream就可以了。
你总不会是想通过socket自己组织个http协议直接发送给新浪吧。
Java code
import java.io.*;
import java.net.*;
public class SocketTest
{
public static void main(String[] args) throws MalformedURLException, IOException
{
SocketTest server = new SocketTest();
server.await();
}
public void await() throws MalformedURLException, IOException
{
ServerSocket serverSocket = null;
try
{
serverSocket = new ServerSocket(80);
}
catch (IOException e)
{
e.printStackTrace();
System.exit(1);
}
while (true)
{
Socket socket = null;
InputStream input = new URL("http://www.sina.com").openStream();
OutputStream output = null;
try
{
socket = serverSocket.accept();
output = socket.getOutputStream();
int temp;
while((temp=input.read())>0)
{
output.write(temp);
System.out.print(Integer.toHexString(temp)+" ");
}
output.flush();
output.close();
socket.close();
}
catch (Exception e)
{
e.printStackTrace();
continue;
}
}
}
}