当前位置:  技术问答>linux和unix

有没有用C编写的服务端SOCKET程序

    来源: 互联网  发布时间:2015-09-02

    本文导语:  就是本机建立服务,打开服务端口的程序.谢谢 | #include  #include  void main() { WSADATA wsd; SOCKET sListen,sClient; struct  sockaddr_in local,client; struct hostent * host = NULL; WSAStartup(MAKEWORD(2,2),&wsd); sLis...

就是本机建立服务,打开服务端口的程序.谢谢

|
#include 
#include 

void main()
{
WSADATA wsd;
SOCKET sListen,sClient;
struct  sockaddr_in local,client;
struct hostent * host = NULL;

WSAStartup(MAKEWORD(2,2),&wsd);

sListen  = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

local.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

local.sin_family = AF_INET;

local.sin_port = htons(4444);

bind(sListen,(struct sockaddr*)&local,sizeof(local));

listen(sListen,8);

int iAddrSize = sizeof(client);

sClient = accept(sListen,(struct sockaddr *)&client,&iAddrSize);

char buf[10] = "hello";
send(sClient,buf,6,0);

couth_addr);


#ifdef DEBUG
printf("ip address=%sn",inet_ntoa(proxy.sin_addr));
#endif

/* connect http server */
if(connect(proxy_sockfd,(SockAddr*)&proxy,sizeof(SockAddr))==-1){
perror("proxy connect error");
close(connfd);
free(url);
return;
}

/* send request to http server */
send(proxy_sockfd,recv_buf,num,0);

#ifdef DEBUG
printf("n================proxy request================n");
printf("%sn",recv_buf);
printf("n============================================n");
#endif

/*
FD_ZERO(&read_set);
FD_SET(connfd,&read_set);
FD_SET(proxy_sockfd,&read_set);
*/

while(1){

#ifdef DEBUG
printf("n==========while begin==============n");
#endif

FD_ZERO(&read_set);
FD_SET(connfd,&read_set);
FD_SET(proxy_sockfd,&read_set);


#ifdef DEBUG
printf("connfd=%d,proxy_sockfd=%dn",connfd,proxy_sockfd);
printf("n========select forward===============n");
#endif

num_select=select((connfd>proxy_sockfd?connfd:proxy_sockfd)+1,&read_set,NULL,NULL,NULL);

#ifdef DEBUG
printf("num_select=%dn",num_select);
printf("n========select backwork==============n");
#endif

if(FD_ISSET(connfd,&read_set)){
bzero(recv_buf,MAX_DATA_SIZE);
num=recv(connfd,recv_buf,MAX_DATA_SIZE,0);

#ifdef DEBUG
printf("n===============proxy request again====================n");
printf("%sn",recv_buf);
printf("n==================================================n");
#endif

if(num==0 || num==-1){

#ifdef DEBUG
printf("client[%d] clsoedn",connfd);
#endif

close(connfd);
close(proxy_sockfd);
break;
}

send(proxy_sockfd,recv_buf,num,0);
//FD_CLR(connfd,&read_set);
}

if(FD_ISSET(proxy_sockfd,&read_set)){
bzero(recv_buf,MAX_DATA_SIZE);
num=recv(proxy_sockfd,recv_buf,MAX_DATA_SIZE,0);

#ifdef DEBUG
printf("n================http server response========================n");
printf("%sn",recv_buf);
printf("n===========================================================n");
#endif

if(num==0 || num==-1){

#ifdef DEBUG
printf("server[%d] closedn",proxy_sockfd);
#endif

close(connfd);
close(proxy_sockfd);
break;
}

send(connfd,recv_buf,num,0);
//FD_CLR(proxy_sockfd,&read_set);
}

#ifdef DEBUG
printf("n=====================while end============================n");
#endif

} //end while

free(url);

//printf("ip=%sn",inet_ntoa(proxy.sin_addr));
}

void* start_thread(void* arg){
int connfd;
connfd=*(int*)(arg);

#ifdef DEBUG
printf("n>>>>>>>>>>>>>>>>>>>>>>>this is the %d thread>>>>>>>>>>>>>>>>>>>>>>>>>>>n",index_thread++);
#endif

handle_request(connfd);
pthread_exit(NULL);
}

====================================

|
友情 UP :)))
MARK,我也想要这方面的资料,不知哪位大虾支持一下..了。.

|
UNP(Unix Network Porgramming). Vol1 , Page 11.

|
#include 
int main()
{
  struct sockaddr_in conn_addr;
  int    sock_fd;
  char   buf[2048];
  if((sock_fd=socket(AF_INET,SOCK_DGRAM,0))

    
 
 

您可能感兴趣的文章:

  • 请问用jsp编写程序,非要编写代码么?有没有什么象fontpage2000那样的工具,能够生成一些固定模板的工具?就是说不用全部都写的工具。望
  • Linux有没有类似bat文件,如何编写。
  • 要编写一个后台的socket通讯程序,各位有没有什么好的建议?
  • 请问用Linux编写PDA上的程序应该用什么开发环境?有没有像eVC这样的东东?
  • 有没有好一点的java编写工具
  • 想学JAVA,有没有轻量级一点的JAVA程序编写器????
  • 用UNIX中,编写C/C++程序,用什么开发工具?有没有什么集成开发环境啊?
  • Linux中有没有类似Windows中的动态链接库的东东?怎么编写的?
  • 请问载linux下如何调试汇编程序,有没有像debug的程序。
  • sccs只能管理单个程序,有没有能管理多个程序的工具?
  • 学习JAVA程序设计,有没有《WINDOWS程序设计》这样的经典书籍?
  • 这里有没有在mac os下开发程序的程序员啊?
  • 有没有关于数字签名的程序,与银行相互信任的程序
  • 有没有什么办法能在程序中得到当前程序自己的路径呢?
  • 请问:有没有办法欺骗一个程序得到假的本机ip地址而不影响其它程序。
  • 编程语言 iis7站长之家
  • 请问有没有办法让程序在崩溃的时候自启动
  • 有没有这样的驱动程序?
  • linux中有没有这样一个程序?
  • 请问高级程序员有没有考java语言的?
  • 有没有一种临时文件在关闭后自动删除的?不管程序是否正常退出
  • ubuntu有没有类似mstsc的远程桌面控制程序?
  • 有没有好的Linux程序源代码网站啊
  • redhat8.0 有没有nVIDIA GeForce4 MX 440 芯片显卡的驱动程序?
  • 请问gcc有没有类似GetExitCodeProcess的函数,可以获得调用的外部程序的返回值呢?
  • 有没有人在Solaris下开发过访问sybase数据库的程序?
  • 有没有用Java写应用程序的?
  • 有没有win下面的shell仿真程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [AIX]有没有办法查到有没有用户执行了Kill命令
  • linux里有没有象vc那样的IDe啊,有没有类库什么的呢
  • 有没有用过 JCE 的朋友,生成x.509证书,有没有免费算法,用哪家的比较好,给出示例代码!
  • 请问jsp有没方法判断窗口有没有框架???
  • 有没有哪位知道linux下有没有什么可视聊天的工具
  • 请问:编译内核时,make bzimage命令后,提示没有这个规则,这有没有影响呀?
  • 有没有搞错,JSP精华版数据全部没有了。
  • 我想在VMware上装FreeBSD,有没有人这样做过?有什么问题没有?
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?
  • Qt中有没有类似VB中winsock和timer的控件呀,我好像没有找到.
  • 转 请大家讨论一下,现在我们开发J2EE的Application Server还有没有机会,这里有没有这种人才? (愿意给300分)
  • 有没有用过ejb,又开始学com的,如果有,介绍一下经验?没有,则给个理由(如果你有时需要用DNA)?
  • java中有没有destructor的东东,好像一般的class里都没有嘛,难道不要手工做这些事情,全部交给gc处理吗?
  • 在linux redhat6.0中,进入x_window,请问系统有没有自带的c编译器,比如gcc;如果没有,那里可以下载并安装?
  • JAVA中没有宏,那编程和调试起来不是很麻烦吗?有没有一些折中办法?
  • SCJP有没有用
  • InstallShield 有没有linux版本的?
  • 有没有玩的转LINUX源码的高手?
  • 谁知道现在有没有Linux下的搜索引擎?
  • 谁知道现在有没有Linux下的搜索引擎??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3