| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 614 人关注过本帖
标题:接口问题
只看楼主 加入收藏
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
 问题点数:0 回复次数:9 
接口问题
各位 偶学C 不久,请教各位大虾们什么是接口程序,如何用C写接口程序啊。接口程序是干什么用的啊?问的愚蠢了点,但我真的不懂这个,还望指点。尽量说的详细点我比较笨谢谢
搜索更多相关主题的帖子: 接口 
2006-05-12 15:52
见习小偷
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-3-15
收藏
得分:0 

呵呵,我刚做完一个socket通讯程序,就是用到你所说的接口了,比如一个服务端,一个客户端,客户端给服务端发命令,服务端返回结果,这样一个接口程序就完成了。要用到c里面的socket等相关函数以及多个库文件支持来做!简单说就是两个main()程序,编译运行后都在等待,客户端等待从键盘输入指令, 服务端等待接收;;客端输完后,服务端就能显示已收到,并返回一个指令让客户端也接收到。 这种程序一般用于linux等系统下实现通讯,发个简单的客户端给你看看,服务端就不发了呵呵!

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define MAXDATASIZE 100

int main(int argc, char *argv[])
{
if(argc<3){
fprintf(stderr,"Please enter the server's hostname!\n%d",argc);
exit(1);
}

printf("Hello, world %s %s\n",argv[1],argv[2]);

get_telnet_data(argv[1],atoi(argv[2]));

return 0;
}

int get_telnet_data(char *ipaddr,int port)
{
int sockfd,recvbytes;
char buf[MAXDATASIZE];
char *hostip = ipaddr;
struct hostent *host;
struct sockaddr_in serv_addr;
char data[MAXDATASIZE*2] = {0};

host = gethostbyname(hostip);//完成域名转换ip
if (host==NULL)
{
printf("get ip addr error!\n");
return 1;
}

sockfd = socket(AF_INET, SOCK_STREAM, 0);//建立socket
if (sockfd==-1)
{
printf("create socket error!\n");
return 1;
}

serv_addr.sin_family=AF_INET;//初始化serv_addr
serv_addr.sin_port=htons(port);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero),8);

int conn_stat = connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr));//通过句炳和serv_addr连接服务端
if (conn_stat==-1)
{ printf("connect failed!\n");
return 1;
}

recvbytes = 1;
while (recvbytes>0)//循环发送与返回(客户端先发送后监听,服务端先监听后返回)
{ memset(buf,0,sizeof(buf));
printf("the order is: ");
scanf("%s",buf);
if (send(sockfd, buf, 100, 0)==-1)//发送信息,失败返回-1
{
printf("send failed!\n");
close(sockfd); return 1;
}

recvbytes=recv(sockfd, buf, MAXDATASIZE, 0);//接收返回信息
buf[recvbytes] = '\0';//字符串结尾赋0
printf("receive data is: %s\n",buf);
if (strstr(buf,":")!=NULL)//在命令消息串中找字符,协议中遇":"结束
{close(sockfd); return 1;}
if (strstr(buf,">")!=NULL)//在命令消息串中找字符,协议中遇":"结束
{break; }
}
close(sockfd);
return 0;
}

2006-05-12 16:29
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
这么多咋记呀!
看来好难哦!!

奋斗改变一切!!
2006-05-12 18:07
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
老潭的书上没有说啊 有没有这方面的教程啊 推荐推荐啊

2006-05-12 20:54
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
我有的,这些是玩LINUX的人必备的资料之一

另外,小偷,我还不知道你想问什么啊

淘宝杜琨
2006-05-12 20:57
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
有两个MAIN()怎么做啊 先执行哪一个啊

2006-05-12 21:12
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
加我493420337

2006-05-12 21:13
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
...

淘宝杜琨
2006-05-12 21:22
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
告诉我你的EMAIL,我发给你,我的QQ不能传,或者MSN也可以

淘宝杜琨
2006-05-12 21:23
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 

2006-05-15 20:31
快速回复:接口问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016326 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved