时间获取客户端程序遇到的问题

2009-06-22 01:01:46 坚持!


cc -o client daytimetcpcli.c

编译程序通过后,生成一个client应用程序后,运行./client 206.168.112.96

等待了75秒后屏幕输出Connection timed out

后来问了同学才知道是时间服务器关了。 

端口号13是系统定义的时间服务用的特定端口号。

也就是说这个程序如果连别的机器没有开时间服务的,就会返回connected refuse

将程序中的13 端口号换成50000,然后在daytimesrv.c的端口号也换成50000.然后重新编译。

将srv程序拷到另一台机器上,先运行,然后在本机行运行./client程序。成功


下面是为了这个程序查找的一些信息

获取错误信息函数

extern int errno;

#include <errno.h>

char *strerror(int errnum);

返回:errnum 对应的错误信息地址。

connect函数

#include <sys/socket.h>

int connect(int sockfd, const struct sockaddr *servaddr, socklen_addrlen);

返回: 0-----成功,-1-------出错

 

1. 套接口地址结构

IPV4地址套接口:

struct sockaddr_in

2. 字节排序函数

#include <netinet/in.h>

uint16_t htons(uint16_t host16bitvalue);

uint32_t htonl(uint32_t host32bitvalue);

均返回:网络字节序值

uint16_t ntohs(uint16_t net16bitvalue);

uint32_t ntohl(uint32_t net32bitvalue);

均返回:主机字节序值

3. 字节操作函数

#include <strings.h>

voide bzero(void *dest, size_t nbytes);

voide bcopy(const void *src, void *dest, size_t nbytes);

int vcmp(const void *ptr1, const void *ptr2, size_t nbytes);

返回:0------相等, 非0--------不相等

ANSI C 函数

#include <string.h>

void *memset(void *dest, int c, size_t len);

void *memcopy(void *dest, const void *src, size_t nbytes);

int memcmp(const void * ptr1, const void *ptr2, size_t nbytes);

返回: 0-----相同,>0 或 < 0 -----不相同

4. IPV4地址转换函数(ASCII 字符串 与 网络字节序 的 二进制值间转换)

#include <arpa/inet.h>

int inet_aton(const char *strptr, struct in_addr *addrptr);

返回:1------串有效, 0---------串有错

int inet_addr(const char *strptr);

返回:若成功,返回32位二进制的网络字节序地址; 若有错,则返回INADDR_NONE

char *inet_ntoa(struct in_addr inaddr);

返回:指向点分十进制数串的指针

5.IPV4和IPV6都能处理的地址转换函数

字母p(presentation)表达式ASCII码串,n(numeric)数值格式网络字节序二进制格式

#include <arpa/inet.h>

int inet_pton(int family, const char *strptr, void *addrptr);

返回: 1-----成功,0-----输入不是有效的表达式,-1-----出错

const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);

返回: 指向结果的指针-----成功,NULL----出错

6. readn writen 和 readline

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值