怎么指定客户端的端口去连服务???

maxx 2007-04-24 03:30:03
我现在需要指定一个客户端的端口(比如30000)来连接服务,这个怎么实现啊???
一般都是自己分配的,没见过自己指定的!
...全文
229 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
maxx 2007-04-25
  • 打赏
  • 举报
回复
我又试了试 发现是绑定端口的问题,如果我不绑定本地端口就没问题,可以马上连上
maxx 2007-04-25
  • 打赏
  • 举报
回复
好了可以了,谢谢一楼的朋友!
但现在执行一遍程序再CONNECT就返回-1,给过一会再执行才可以,这是咋会事啊???
maxx 2007-04-25
  • 打赏
  • 举报
回复
to:whl3390
大哥你看清楚问题
whl3390 2007-04-25
  • 打赏
  • 举报
回复
SOCKADDR_IN结构体里面指定端口啊
maxx 2007-04-25
  • 打赏
  • 举报
回复
我试了好象不行啊,服务收到的还是随机端口!
下面这句我没加,有关系吗??
setsockopt(serSocket,SOL_SOCKET,SO_REUSEADDR,(char *)&flag,sizeof(int));
lzd 2007-04-25
  • 打赏
  • 举报
回复
要重新连吗? 要closesocket之后再连吧。。
lzd 2007-04-24
  • 打赏
  • 举报
回复
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;;
struct hostent *host;

if((serSocket=socket(AF_INET,SOCK_STREAM,0)) == -1)
{
mylog("创建Socket发生错误!");
return -1;
}

if((host=gethostbyname(SERVER_ADDR)) == NULL)
{
mylog("调用gethostbyname错误,地址:[%s]!",SERVER_ADDR);
return -1;
}

intflag=1;
setsockopt(serSocket,SOL_SOCKET,SO_REUSEADDR,(char *)&flag,sizeof(int));

client_addr.sin_family = AF_INET;
client_addr.sin_port = htons(4567);
client_addr.sin_addr.s_addr = INADDR_ANY;
if(bind(serSocket,(struct sockaddr *)&client_addr,sizeof(client_addr)) == -1)
{
mylog("绑定错误");
return -1;
}

server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr = *((struct in_addr *)host->;h_addr);
bzero(&server_addr.sin_zero,8);
if(connect(serSocket,(struct sockaddr *)&server_addr,sizeof(server_addr))==-1)
{
mylog("连接服务器发生错误,地址:[%s]",SERVER_ADDR);
return -1;
}

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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