如何让服务器监听两个端口?
下面是我的服务器代码:#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 展开
#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 展开
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询