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

Linux 父子进程使用TCP连接通信connect错误

    来源: 互联网  发布时间:2016-07-21

    本文导语:  函数功能是父子进程使用TCP socket进行通信,只需要把字符串显示出来,运行提示错误是 at line 176 connect ERROR: con_rtn = -1, errno = 22 Invalid argument 不知何故? /* *function    : TCP communication with a forked subtask   ...

函数功能是父子进程使用TCP socket进行通信,只需要把字符串显示出来,运行提示错误是
at line 176 connect ERROR: con_rtn = -1, errno = 22 Invalid argument
不知何故?
/*
*function    : TCP communication with a forked subtask
  struct sockaddr_un
    {
      sa_family_t sun_family; // PF_NUIX or AF_UNIX or AF_LOCAL
      char sun_path[UNIX_PATH_MAX];  //name of path;
    };
  //usr/include/linux/socket.h
  typedef unsigned short sa_family_t;
  struct sockaddr            //this is general structure;
    {
      unsigned short sa_family; //AF_xxx
      char sa_data[14];        // 14 bytes of protocol address 
    };
  //usr/include/netinet/in.h
  struct sockaddr_in        //internet socket, can convert between above and it;
    {
      short int sin_family;    //address cluster
      unsigned short int sin_port; //port number
      struct in_addr;         //ip address
      unsigned char sin_zero[8]; //for the same size as struct sockaddr
    };
  struct in_addr
    {
      unsigned long s_addr;
    };
  inet_addr()is used to convert general ip 192.168.0.1 int 32bits ip 0xc0a80001;

  // return actual bytes been sent. flag always been 0, if error errno will be set;
  int send(int sockfd, const void* msg, int len, int flags);

  // use unlinked diagram to send message, so need sockaddr to define ip and port, in general, tolen is sizeof(struct sockaddr), and return value as above;
  int sendto(int sockfd, const void* msg, int len, unsigned int flags, const struct sockaddr* to, int tolen);
   
  //
  int recv(int sockfd, void* buf, int len, unsigned int flags);

  //
  int recvfrom(int sockfd, void* buf, int len, unsigned int flags, struct sockaddr* from, int*fromlen);
  once you use diagram socket, but use connect, you can use send() and recv() too, but this socket will still use diagram for service in transport layer, but in send or receive, kernel will add source and destination address for it;
  close(sockfd) or int shutdown(int sockfd, int how) to end a data transport;


*create time : 2009/12/07  13:50
*modify time : 
*history     :
*/


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 

#include 
extern int errno;
extern char* strerro(int );

char path[] = {"/tmp/socketmy"};   /* socket name,  */

int main(void)
{
   struct sockaddr_un sock;

   int len=sizeof(sock);
   int pid;   /* child task's process id */
   int soc;   /* socket file descriptor */
   int con_soc;
   int lisn_rtn;
   int bind_rtn;
   int con_rtn;
   int com_soc;
   char buffer[80];

   errno = 0;

   memset((char *) &sock, 0, sizeof(sock));
   strcpy(sock.sun_path, path);
   sock.sun_family = AF_UNIX;
   unlink(path);

   /* establish and initialize TCP socket struct */
   soc = socket(AF_UNIX, SOCK_STREAM, 0);
 
   if (soc 

    
 
 

您可能感兴趣的文章:

  • 在linux,如何用共享内存来实现进程间的通讯?(这些进程没有父子关系)
  • 在linux下,用共享内存来实现进程间的数据交互,请问如何实现同步?(这些进程没有父子关系)
  • linux僵尸(zombie)进程介绍及清除
  • 高手请教!linux怎样通过pid获取进程信息,如:进程名、进程状态等?
  • linux下进程占用内存空间详解
  • linux命令如何实现重启父进程而不会使其子进程退出
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • Linux中最多同时可以开多少个进程,一个进程可以开多少个线程?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • Linux守护进程 的子进程 终端处理
  • Linux内核进程与应用进程的通信方式有哪些?
  • linux下system函数调用shell命令后,怎样让主进程不等子进程返回,接着执行(在线)?
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • 如何linux下监控进程及其子进程占用资源?
  • linux下的进程如何访问另外一个进程建立的mutex?
  • linux中用killall命令杀死进程的时候会释放掉该进程所占有的内存吗?
  • linux内核高手进!关于调用__fork()时0号进程的子进程才能与父进程共享PID的困惑
  • 请教:在Linux下怎么样检测一个进程是否是僵尸进程??
  • 请问linux进程的哪些信息保存在内核里?哪些信息又保存在进程空间里?谢谢
  • Linux下请教一个父进程杀死子进程的问题.
  • 怎么查看Linux中所运行的进程,并且知道哪些是停止响应的,用什么命令可以杀掉停止响应的进程?
  • 【求助】linux/Unix下创建子进程,向父进程发送信号,子进程也能收到改信号,此时如何让子进程不收到信号
  • (菜鸟提问)怎么区份linux系统进程和用户进程?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux/centos安装nginx常见错误及解决办法
  • linux安装codeblock 编译错误make: *** [all-recursive] 错误 1
  • Linux下怎样查c程序的错误号?程序出现错误:System error 32: Broken Pipe, 是什么原因?
  • 紧急求救:在LINUX下如何根据错误代码,查出对应的错误描述?
  • 在Linux系统上recv返回错误,通过errno得到的错误消息为"Interrupted system call"
  • FTP匿名登陆 LINUX 出现错误 linux FTP 550 permission
  • linux 编程获取错误信息有没相关资料?
  • windows下好使的函数到linux下怎么就段错误了呢?
  • linux中非正常关机,出现的错误如何解决?
  • 请问,我用turbo Linux,远程FTP报Password required, but none set错误
  • Linux硬件错误检查工具 mcelog
  • linux安装错误,怎么解决
  • Linux 下用什么函数查找socket上一次的错误?
  • Linux启动错误求助!
  • VM下的linux Socket程序怎么客户机一连接就出现Bad address的错误?
  • 我向linux内核里加载模块时出现段错误
  • Linux虚拟机启动出现错误
  • 为什么每次登录 linux 都出现这句错误信息呢?
  • linux源码包编译有错误
  • Linux下调用.so引发的段错误问题
  • linux下配置PHP 编译的时候出现错误
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


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

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

    浙ICP备11055608号-3