java使用socket连接网站绑定客户端端口问题

佚仙 2012-09-12 12:11:37

package com.yix.ctrl.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;



public class RequestKeeper {
private static final String LOCALHOST = "localhost";
private static final String BAIDU = "www.baidu.com";
public static void main(String[] args){
String postData = "method=keep&type=server";
postData(postData,BAIDU,80);
}


public static void postData(String postData,String server,int port){
try {
StringBuffer head = new StringBuffer("POST /YControl/index HTTP/1.1\r\n");
head.append("Host: "+server+"\r\n");
head.append("Accept: text/html\r\n");
head.append("Connection: Close\r\n");
head.append("Content-Length: "+postData.length()+"\r\n");
head.append("Content-Type: application/x-www-form-urlencoded\r\n");
head.append("User-Agent: JAVA\r\n");
head.append("\r\n");
head.append(postData);
Socket serverSocket = new Socket();
//只要使用bind立刻报SocketException:Invalid argument or cannot assign requested address
serverSocket.bind(new InetSocketAddress(InetAddress.getLocalHost(),10101));
serverSocket.connect(new InetSocketAddress(InetAddress.getByName(server),port));
// Socket serverSocket = new Socket(server,port,InetAddress.getByName("127.0.0.1"),10101);
// Socket serverSocket = new Socket(server,port);
PrintWriter pw = new PrintWriter(serverSocket.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(serverSocket.getInputStream()));
pw.write(head.toString());
pw.flush();
String line = "";
while((line=reader.readLine())!=null){
System.out.println(line);
}
pw.close();
reader.close();
serverSocket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

}


RT,如果是连接本地服务器bind可以成功,但是只要是外网服务器立刻就报出Invalid argument or cannot assign requested address异常,去掉bind后恢复正常

求高人解答
系统:fedora 17
10101端口已经在iptables里配置通过
...全文
118 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧