socket編程中的getservbyname引數中的name是固定的服務名還是可以自定義的?求解答
int main(int argc, char *argv[])
{
struct sockaddr_in fsin;
char *service = "daytime";//這里的daytime我改啦之后就會在getservbyname那里出錯
SOCKET msock, ssock;
int alen;
WSADATA wsadata;
int QLEN;
switch(argc)
{
case 1:
break;
case 2:
service = argv[1];
break;
default:
errexit("usage:TCPdaytime[port]\n");
}
}//這是main函式里的一段
void TCPdaytimed(SOCKET fd)
{
char *pts;
time_t now;
(void)time(&now);
pts = "hello!\n";
(void)send(fd, pts, strlen(pts), 0);
(void)closesocket(fd);
}//這是accept后提供的服務
if(pse = getservbyname(service, transport))
sin.sin_port = (u_short)pse->s_port;
else if((sin.sin_port = htons((u_short)atoi(service)))==0)
errexit("can't get \"%s\" service entry\n", service);
//service引數改了之后提示else if后面的錯誤
uj5u.com熱心網友回復:
Linux下man getservbyname一切盡知,Windows的猜測應該類似。The getservbyname() function returns a servent structure for the entry from the database that matches the service name using protocol proto. If proto is NULL, any proto-
col will be matched. A connection is opened to the database if necessary.
s_name The official name of the service.
FILES
/etc/services
services database file
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/105325.html
標籤:網絡協議與配置
上一篇:LTE控制面和用戶面的聯系
下一篇:關于netty封裝包頭
