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

SCO UNix 的 c/c++ 编译器哪儿有? 带socket的例子哪儿有?

    来源: 互联网  发布时间:2014-11-24

    本文导语:  我想在Sco Unix下实现Socket  和Window2000的socket 对传数据。 不知哪儿有较好的代码。 | 只试过sco和sco连,没试过和win不过给你些文档,希望有帮助。 socket 是进行程序间通讯(IPC)的 BSD 方法。...

我想在Sco Unix下实现Socket  和Window2000的socket 对传数据。
不知哪儿有较好的代码。

|
只试过sco和sco连,没试过和win不过给你些文档,希望有帮助。
socket 是进行程序间通讯(IPC)的 BSD 方法。这意味着 socket 用来让一个进程和其他的进程互通信息,
就象我们用电话来和其他的人交流一样。 
用电话来比喻是很恰当的,我们在后面将一直用电话这个概念来描叙 socket 。 
装上你的新电话(怎样侦听?) 
  一个人要能够收到别人打给他的电话,首先他要装上一门电话。同样,你必须先建立 socket 以侦听线路。这个过程包含几个步骤。
首先,你要建立一个新的 socket,就象先装上电话一样。socket() 命令就完成这个工作。 
因为 sockets 有几种类型,你要注明你要建立什么类型的。你要做一个选择是 socket 的地址格式。如同电话有音频和脉冲两种形式一样,
socket 有两个最重要的选项是 AF_UNIX 和 IAF_INET。AF_UNIX 就象 UNIX 路径名一样识别 sockets。这种形式对于在同一台机器上的 
IPC 很有用。而 AF_INET 使用象 192.9.200.10 这样被点号隔开的四个十进制数字的地址格式。除了机器地址以外,
还可以利用端口号来允许每台机器上的多个 AF_INET socket。我们这里将着重于 AF_INET 方式,因为他很有用并广泛使用。 
另外一个你必须提供的参数是 socket 的类型。两个重要的类型是 SOCK_STREAM 和 SOCK_DGRAM。 SOCK_STREAM 表明数据象字符流一样通过
 socket 。而 SOCK_DGRAM 则表明数据将是数据报(datagrams)的形式。我们将讲解 SOCK_STREAM sockets,他很常见并易于使用。 
在建立 socket 后,我们就要提供 socket 侦听的地址了。就象你还要个电话号码来接电话一样。bind() 函数来处理这件事情。 
SOCK_STREAM sockets 让连接请求形成一个队列。如果你忙于处理一个连接,别的连接请求将一直等待到该连接处理完毕。
listen() 函数用来设置最大不被拒绝的请求数(一般为5个)。一般最好不要使用 listen() 函数。 
下面的代码说明如何利用 socket()、 bind() 和 listen() 函数建立连接并可以接受数据。 
  /* code to establish a socket; originally from bzs@bu-cs.bu.edu 
   */ 
int establish(unsigned short portnum) 
  { 
     char myname[MAXHOSTNAME+1]; 
   int s; 
   struct sockaddr_in sa; 
   struct hostent *hp; 
     memset(&sa, 0, sizeof(struct sockaddr_in)); /* clear our address */ 
   gethostname(myname, MAXHOSTNAME); /* who are we? */ 
   hp= gethostbyname(myname); /* get our address info */ 
   if (hp == NULL) /* we dont exist !? */ 
   return(-1); 
   sa.sin_family= hp->h_addrtype; /* this is our host address */ 
   sa.sin_port= htons(portnum); /* this is our port number */ 
   if ((s= socket(AF_INET, SOCK_STREAM, 0)) /* obligatory includes */ 
  #include 
  #include 
  #include 
  #include 
  #include 
  #include 
  #include 
  #include 
#define PORTNUM 50000 /* random port number, we need something */
void fireman(void); 
  void do_something(int); 
main() 
  { int s, t; 
if ((s= establish(PORTNUM)) 0) 
   ; 
  } 
/* this is the function that plays with the socket. it will be called 
   * after getting a connection. 
   */ 
  void do_something(int s) 
  { 
   /* do your thing with the socket here 
   : 
   : 
   */ 
  } 
拨号 (如何调用 socket) 
  现在你应该知道如何建立 socket 来接受调用了。那么如何调用呢?和电话一样,你要先有个电话。用 socket() 函数来完成这件事情,
就象建立侦听的 socket 一样。 
在给 socket 地址后,你可以用 connect() 函数来连接侦听的 socket 了。下面是一段代码.
  int call_socket(char *hostname, unsigned short portnum) 
  { struct sockaddr_in sa; 
   struct hostent *hp; 
   int a, s; 
if ((hp= gethostbyname(hostname)) == NULL) { /* do we know the hosts */ 
   errno= ECONNREFUSED; /* address? */ 
   return(-1); /* no */ 
   } 
memset(&sa,0,sizeof(sa)); 
   memcpy((char *)&sa.sin_addr,hp->h_addr,hp->h_length); /* set address */ 
   sa.sin_family= hp->h_addrtype; 
   sa.sin_port= htons((u_short)portnum); 
if ((s= socket(hp->h_addrtype,SOCK_STREAM,0)) 0) { 
   bcount += br; /* increment byte counter */ 
   buf += br; /* move buffer ptr for next read */ 
   } 
   else if (br install new->from hostname->continue->media device(cd-rom drvier 0)->continue->选择sco openserver develop system->install
.c为c文件,.C为c++文件。

    
 
 

您可能感兴趣的文章:

  • sco下常用的c++编译器有什么?在哪里下载?谢谢
  • SCO OpenServer 5.0.6 的 C 编译器是否支持 64 bits 整数?
  • 请问大家:我刚装了sco unix,还没有cc编译器,不知到哪里去找?
  • sco unix 5.0.6如果安装时未安装c/c++编译器,如何添加?
  • 可恨,SCO UNIX OPENSERVER 5.5的C编译器安装后居然要输注册码,诸位大虾有谁知道?
  • 请问在sco unix 下怎样调刷新率?c程序的编译器哪里有安装?
  • xerces在sco下如何编译?---在线等
  • SCO Unix下的C程序编译问题?
  • 请问SCO UNIX下如何编译C语言程序
  • 在SCO OpenSever 5中如何编译C语言程序???
  • 在SCO UNIX 5。0。5下,如何安装C编译环境?
  • sco 编译lisence出错 求救!
  • 在sco unix openserver 下如何编译c程序?
  • SCO 下的cc编译问题?
  • 如何在SCO UNIX 上搭建C的编译和开发环境???
  • sco unix平台上的c有反编译工具吗有没有
  • 请问高手,在SCO UNIX系统下如何编译共享连接库(*.so)
  • sco上调用syslog()编译出错???
  • sco下用gcc编译hello.cpp出来的可执行文件居然有2800280字节,而且运行出错???
  • sco 5.0.7 内核编译不过去
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SCO OpenServer 5.05和SCO UNIXWARE7.11有什么区别?
  • sco unix中类似reg.sco的文件怎么执行?
  • 安装SCO UNIX到PC机上是否一定要用SCO UNIX光盘?
  • SCO UnixWare 跟 SCO Unix 有什么不同????????????是同一个系统吗。。。
  • 请问谁在SCO上用过PERL的DBI/DBD这些东西?MD5算法,LDAP,MYSQL都支持SCO吗?
  • 高分,在sco unix5.05下面用modem进行拔号,或sco unix的学习教程
  • Sco Unix 和red hat linux的最新版本是什么,各有几张盘,SCO UNIX和微软的Xenix哪个更好?
  • 在sun公司网站上,好象没有jdk for sco unix 的版本,可否下载for solaris的辕马在sco unix 下编译
  • sos!我的手提上的网卡是sis900,装了sco 5.0.5发现没有驱动,哪里可以下到sis 900的网卡在sco下的驱动??
  • 路由器配置:有一局域网(SCO UNIX 5.0.5)与一台主机(SCO UNIX 5.0.5)通过祯中继联接。路由器(CISCO2610作主节点)在局域的IP为IPa,广
  • About SCO Openserver and Oracle
  • 学SCO还是学SOLARIS
  • 菜鸟向sco unix+oracle高手请教
  • 请问TOMCAT的LINUX包是否都可以在SCO UNIX中运行和安装
  • 请问sco-Unix的最新版本是多少
  • sco连接数据库的问题
  • 如何安装SCO OpenServer 5的网络开发包
  • sco opensever5是什么东东?有人在用吗?
  • sco unix5.0.6与win2000的双操作系统???
  • 在sco unix中mount一个fat32的分区的问题……


  • 站内导航:


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

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

    浙ICP备11055608号-3