📄 connect_client.c
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <winsock.h>
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#endif
SOCKET sockconnect(const char *host,const char *service,const char *transport);
/*-------------------------------------------------------------------------
*connectUDP
*-------------------------------------------------------------------------
*/
SOCKET
UDPconnect(const char *host,const char *service)
{
return sockconnect(host,service,"udp");
}
/*-------------------------------------------------------------------------
*connectTCP
*-------------------------------------------------------------------------
*/
SOCKET
TCPconnect(const char *host,const char *service)
{
return sockconnect(host,service,"tcp");
}
/*-------------------------------------------------------------------------
*
*-------------------------------------------------------------------------
*/
SOCKET
sockconnect(const char *host,const char *service,const char *transport)
{
struct hostent *phe; /*host information */
struct servent *pse; /* server information */
struct protoent *ppe; /*protocol information */
struct sockaddr_in sin; /*endpoint IP address */
int s, type; /* socket description */
memset(&sin,0,sizeof(sin));
sin.sin_family=AF_INET;
/**** get port number from service ****/
if( pse=getservbyname(service,transport) )
sin.sin_port=pse->s_port; /* port */
else if( (sin.sin_port=htons( (u_short)atoi(service)))==0)
{
printf("get server information error \n");
WSACleanup();
exit(1);
}
/**** get IP address from host name ****/
if(phe=gethostbyname(host))
memcpy(&sin.sin_addr,phe->h_addr,phe->h_length); /* host IP address */
else if( (sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE )
{
printf("get host IP information error \n");
WSACleanup();
exit(1);
}
/**** get protocol number from protocol name ****/
if( (ppe=getprotobyname(transport))==0)
{
printf("get protocol information error \n");
WSACleanup();
exit(1);
}
if(strcmp(transport,"udp")==0)
type=SOCK_DGRAM;
else
type=SOCK_STREAM;
/**** creat a socket description ****/
s=socket(PF_INET,type,ppe->p_proto);
if( s==INVALID_SOCKET)
{
printf(" creat socket error \n");
WSACleanup();
exit(1);
}
if( connect(s,(struct sockaddr *)&sin,sizeof(sin))==SOCKET_ERROR )
{
printf("connect socket error \n");
WSACleanup();
exit(1);
}
return s;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -