每次创建socket用完的时候都要关闭。如下用for循环创建了100个socket:
如果不关闭的话,每次创建的sockfd都不一样;
如果关闭的话,每次创建的时候可能用的还是上一次sockfd。
所以,如果创建太多不关闭的话将会耗尽资源,导致创建失败。linux当中每个进程分配的文件句柄数量是有限的(一般是1024)。
socket在Linux下也是被当作一个文件的。
sockfd:socket生成的sockfd对应文件句柄(针对进程的内部标识)。
linux下有3个默认的已经被进程使用了sockfd:
0表示标准输入,1表示表示标准输出,2表示错误输出
linux下如何查看文件句柄最大数:ulimit -n(默认的一般是1024)
linux下如何修改文件句柄最大数:ulimit -n 3000(修改最大文件句柄为3000)

函数说明:

int socket(int  domain,int type,int protocol)
功能:返回描述符
参数说明:domain:也叫协议族(family),指定协议AF_INEF----TCP/IP协议...type:指定socket类型SOCK_STREAM----TCPSOCK_DGRAM----UDP...protocol:公共协议0----自动选择type类型对应的默认协议
返回值:>=0------创建socket成功
如:  int sockfd = socket(AF_INEF,SOCK_STREAM,0);

Windows下的socket编程(需要多操作两步)

1. 初始化动态链接库

2.引用lib库

//第一步:创建socket
#include<windows.h>
#include<winsock2.h>
#pragma comment(lib,"WS2_32.lib")#include<stdio.h>int main(int argc,char *argv[])
{//初始化动态链接库//加载winsock DLLWSADATA ws;if (WSAStartup(MAKEWORD(2,2),&ws)!= 0){printf ("winsock 初始化失败!n");return 1;}int i;for (i=0;i<100;i++){int sockfd = socket(AF_INET,SOCK_STREAM,0); //创建socketif (sockfd == -1){printf ("create socket failed!n");return -1;}printf("[%d]",sockfd); closesocket(sockfd); }getchar();return 0;
}说明:
使用工具:windows下的codeblocks
如果运行上面程序报错:undefined reference to `WSAStartup@8'|
原因:缺少socket的链接参数
解决方案:
menu-->Project-->build options-->Debug-->Linker Settings-->Other Linker Options:
加上 “-lws2_32“

Linux下的socket编程

//第一步:创建socket
#include <sys/types.h> //socket的头文件
#include <sys/socket.h> //socket的头文件
#include <unistd.h> //close的头文件#include<stdio.h>int main(int argc,char *argv[])
{int i;for (i=0;i<100;i++){int sockfd = socket(AF_INET,SOCK_STREAM,0); //创建socketif (sockfd == -1){printf ("create socket failed!n");return -1;}printf("[%d]",sockfd);close(sockfd);}getchar();return 0;
}说明:
Linux下编程的头文件和windows的有差异,需要特别注意。
closesocket——close

如何查看进程的socket_socket编程1--创建socket相关推荐

  1. lsof查看进程占用文件_lsof命令查看进程socket相关信息

    1.释义 查看进程打开的文件.目录,还可以查看进程监听的端口等socket相关的信息 2.系统帮助 lsof: illegal option character: - lsof: -e not fol ...

  2. Linux 如何创建进程函数与查看进程

    进程创建函数 进程就是pcb,意味着创建一个进程,就是创建一个pcb pid_t fork(void) –通过复制调用进程(父进程)创建一个新的进程(子进程) 创建一个新的pcb,然后从父进程pcb中 ...

  3. 【Linux编程】守护进程(daemon)详解与创建

    本文主要参考自:linux系统编程之进程(八):守护进程详解及创建,daemon()使用 一.概述 Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处 ...

  4. python创建新进程_Python并发编程(进程的创建)

    动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的. 并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的 ...

  5. 搜索进程内存地址_Linux编程 6 (查看进程 ps 及输出风格)

    一.查看进程命令ps 1.1 默认ps 命令 在默认情况下,ps命令只会显示运行在当前控制台下,属于当前用户的进程,在上图中,我们只运行了bash shell以及ps命令本身. 上图中显示了程序的进程 ...

  6. linux ps-e和-ax区别,Linux编程 6 (查看进程 ps 及输出风格)

    一.查看进程命令ps 1.1 默认ps 命令 在默认情况下,ps命令只会显示运行在当前控制台下,属于当前用户的进程,在上图中,我们只运行了bash shell以及ps命令本身. 上图中显示了程序的进程 ...

  7. Linux查看进程线程个数

    1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...

  8. Linux查看进程的线程信息

    线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念.当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间.打开的文件),以使叉分开销最小化 ...

  9. Linux下查看进程和线程

    在linux中查看线程数的三种方法 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行显示一个进程. 2.ps xH 手册 ...

  10. 进程——Windows核心编程学习手札系列之四

    进程 --Windows核心编程学习手札系列之四 进程是一个正在运行的程序的实例,有两个部分组成:一个是操作系统用来管理进程的内核对象,内核对象是系统用来存放关于进程的统计信息的地方:另一个是地址空间 ...

最新文章

  1. servlet必知细节(一)
  2. Mobile DevOps 之 Proxmox 实现节流提效
  3. ubuntu 安装yar和使用
  4. python的Dict和set类型
  5. 【Vue US国际会议】使用Vue和NativeScript来开发吸引人的原生手机app
  6. 使用 requests 进行身份认证
  7. Diagnostics: File file:/tmp/spark-***/__spark_libs__***.zip does not exist
  8. 【表盘识别】基于matlab Hough变换指针式仪表识别(倾斜矫正)【含Matlab源码 1058期】
  9. 金蝶KIS 14.1 专业版安装教程
  10. 华为HCNA之PPP认证实验
  11. 神经网络求解二阶常微分方程
  12. android opengl滤镜,Android OpenGL ES滤镜开发设计
  13. 东芝B-SX5T标签打印机安装过程
  14. 威斯康星大学计算机科学教授,UW机器学习和数据科学活动吸引了国际知名的计算机科学家...
  15. bzoj2109 航空管制
  16. Vue前端实战——外卖商家
  17. 云服务器被攻击了怎么解决
  18. 淘宝客CMS,微信公众号,微信淘客机器人
  19. Windows 10 专业工作站 20H1 x64简单修改
  20. 华为机试题(Python)

热门文章

  1. php区分字符串数字,php如何判断字符串是不是数字
  2. 全国计算机等级考试题photoshop,全国计算机等级考试之一级Photoshop试题
  3. xml简单理解,xml增删改操作,仅作笔记,不作为学习借鉴
  4. C语言函数一章教学,c语言案例教程:函数教学讲义.ppt
  5. 增加小球python,python实现弹跳小球
  6. javascript中Object类原型对象的属性和方法
  7. BFS+模拟 ZOJ 3865 Superbot
  8. php经过twemproxy无法delete后端memcache值的解决方法
  9. mootools-1.2.1-core.js在IE中显示不了图像翻页
  10. 通过帮网友解答问题训练同学们使用awk,sed案例