如何让服务器监听两个端口?

下面是我的服务器代码:#include<stdio.h>#include<sys/socket.h>#include<unistd.h>#include<sys/type... 下面是我的服务器代码:
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <time.h>

#define SERVER_PORT 20000 // define the defualt connect port id
#define LENGTH_OF_LISTEN_QUEUE 10 //服务器监听队列请求数目
#define BUFFER_SIZE 255
//#define WELCOME_MESSAGE "welcome to connect the server. "

int main(int argc, char **argv)
{
int servfd,clifd;//server socket client socket
struct sockaddr_in servaddr,cliaddr;

if ((servfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
printf("create socket error!\n");//错误判断
exit(1);
}
bzero(&servaddr,sizeof(servaddr));//bzero ()置字节字符串s的前n个字节为零
servaddr.sin_family = AF_INET;//socket 域 tcp/ip 协议族
servaddr.sin_port = htons(SERVER_PORT);//host -network order
servaddr.sin_addr.s_addr = htons(INADDR_ANY);//host -network order

if (bind(servfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)//命名套接字,将其与IP地址及端口绑定
{
printf("bind to port %d failure!\n",SERVER_PORT);
exit(1);
}

if (listen(servfd,LENGTH_OF_LISTEN_QUEUE) < 0)// 监听socket队列
{
printf("call listen failure!\n");
exit(1);
}

while (1)
{
char buf[BUFFER_SIZE];
long timestamp;//时间戳应答报文(timestamp reply) 时间戳请求报文(timestamp request:) 时间戳请求报文
socklen_t length = sizeof(cliaddr);
clifd = accept(servfd,(struct sockaddr*)&cliaddr,&length);//接受请求,返回一个新套接字描述符
if (clifd < 0)
{
printf("error comes when call accept!\n");
break;
}
//strcpy(buf,WELCOME_MESSAGE);
//inet_ntop(INET_ADDRSTRLEN,cliaddr.sin_addr,buf,BUFFER_SIZE);

printf("from client,IP:%s,Port:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
timestamp = time(NULL);//当前时间
//strcat(buf,"timestamp in server:");
strcat(buf,ctime(×tamp));//strcat把src所指字符串添加到buf结尾处 .ctime把日期和时间转换为字符串
send(clifd,buf,BUFFER_SIZE,0);
close(clifd);

}//exit
close(servfd);
return 0;
}

以上部分是我的服务器监听一个端口的代码,现在我想让服务器监听两个端口,如何实现呢?可以吧代码发到邮箱ok_lyc_lyc@126.com
展开
 我来答
bhtzu
2012-04-12 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4078万
展开全部
最合理的方式是建立多个线程,每个线程监听一个端口。
当然一段代码轮询监听也不是不可以,但在效率上要低不少
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
魅族女孩
2012-04-12
知道答主
回答量:30
采纳率:0%
帮助的人:8.5万
展开全部
您可以尝试一下 使用一个负载均衡
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式