网络 客户端 多种方法 建立与服务端的连接 接口:服务器名,IP socket connect
2007-06-07 16:37
801 查看
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <netdb.h>//gethostbyname
//#include <cygwin/in.h>//struct in_addr(<linux/in.h>)
#include <netinet/in.h>
#include <sys/socket.h>
typedef struct sockaddr SA;
typedef struct sockaddr_in SIN;
int main()
{
int ip =0;
int name;
ip = open_clientfd("61.152.234.71",80,2);
name = open_clientfd("www.sohu.com",80,1);
//
printf("result is %d/n",name);
printf("result is %d/n",ip);
}
//type == 1 gethostbyname
//type == 2 gethostbyaddr
int open_clientfd(char * host,int port,int type)
{
int client_fd;
struct hostent *hp;
struct sockaddr_in serveraddr;
if ((client_fd = socket(AF_INET,SOCK_STREAM,0))<0)
{
return -1;
}
bzero((char *)&serveraddr,sizeof serveraddr);
serveraddr.sin_family = AF_INET;
if (type == 1)//通过机器名来获得hp
{
if ((hp = gethostbyname(host))==NULL)
{
return -2;
}
printf("the h_addr is %02X/n",hp->h_addr);
bcopy((char *)(hp->h_addr),(char *)&serveraddr.sin_addr.s_addr,hp->h_length);
}
if (type == 2)
{
//方法二
//serveraddr.sin_addr.s_addr = inet_addr(host);
//方法三
struct in_addr i;
inet_aton(host,&i);
serveraddr.sin_addr = i;
}
// 方法一
// if (type == 2)//通过IP来获得hp
// {
// if ((hp = gethostbyaddr(host,4,AF_INET))==NULL)
// {
// return -2;
// }
// bcopy((char *)(hp->h_addr),(char *)&serveraddr.sin_addr.s_addr,hp->h_length);
// }
serveraddr.sin_port = htons(port);
if (connect(client_fd,(SA *)&serveraddr,sizeof serveraddr)<0)
{
return -3;
}
return client_fd;
}
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <netdb.h>//gethostbyname
//#include <cygwin/in.h>//struct in_addr(<linux/in.h>)
#include <netinet/in.h>
#include <sys/socket.h>
typedef struct sockaddr SA;
typedef struct sockaddr_in SIN;
int main()
{
int ip =0;
int name;
ip = open_clientfd("61.152.234.71",80,2);
name = open_clientfd("www.sohu.com",80,1);
//
printf("result is %d/n",name);
printf("result is %d/n",ip);
}
//type == 1 gethostbyname
//type == 2 gethostbyaddr
int open_clientfd(char * host,int port,int type)
{
int client_fd;
struct hostent *hp;
struct sockaddr_in serveraddr;
if ((client_fd = socket(AF_INET,SOCK_STREAM,0))<0)
{
return -1;
}
bzero((char *)&serveraddr,sizeof serveraddr);
serveraddr.sin_family = AF_INET;
if (type == 1)//通过机器名来获得hp
{
if ((hp = gethostbyname(host))==NULL)
{
return -2;
}
printf("the h_addr is %02X/n",hp->h_addr);
bcopy((char *)(hp->h_addr),(char *)&serveraddr.sin_addr.s_addr,hp->h_length);
}
if (type == 2)
{
//方法二
//serveraddr.sin_addr.s_addr = inet_addr(host);
//方法三
struct in_addr i;
inet_aton(host,&i);
serveraddr.sin_addr = i;
}
// 方法一
// if (type == 2)//通过IP来获得hp
// {
// if ((hp = gethostbyaddr(host,4,AF_INET))==NULL)
// {
// return -2;
// }
// bcopy((char *)(hp->h_addr),(char *)&serveraddr.sin_addr.s_addr,hp->h_length);
// }
serveraddr.sin_port = htons(port);
if (connect(client_fd,(SA *)&serveraddr,sizeof serveraddr)<0)
{
return -3;
}
return client_fd;
}
相关文章推荐
- 请教:C#网络编程相关的知识,建立socket服务器时向客户端连接,就建立不了了?
- 服务器中判断客户端socket断开连接的方法【转】
- Android客户端 和 pc服务器 建立socket连接并发送数据
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- 终端服务器安全层在协议流中检测到错误,并已取消客户端连接。客户端IP:x.x.x.解决方法
- 只想使某个IP的计算机才能连接到SQL Server服务器,不允许其他客户端连接的方法
- “在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。”的解决方法
- 服务器中判断客户端socket断开连接的方法
- Linux虚拟机ftp客户端与Windows ftp服务器建立连接的方法
- (转)在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)
- Android扫描局域网内IP并建立Socket连接,和PC服务端收发数据
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- 没有任何关闭socket的日志,客户端和服务端进程都在, 网络连接完好, 为什么进行某操作后好好的tcp连接莫名其妙地断了呢?
- 网络编程(23)—— socket客户端连接上服务端是在listen之后而非在accept之时
- 关于连接SQL 2005 出错: provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错 的解决方法
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL 网络接口, error: 26 - 定
- Android开发——本机Tomcat搭建服务器,客户端socket网络连接不上问题以及D-LINK端口转发设置