windows下C语言socket

  • f1_297894
    了解作者
  • 4MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-10 12:18
    上传日期
C语言windows下的socket开发,包括服务器与客户端,代码注释详细,值得学习~
Windows下c语言socket通信.zip
  • client
  • Debug
  • client.sbr
    0B
  • client.obj
    13.6KB
  • client.ilk
    197.8KB
  • vc60.pdb
    76KB
  • client.exe
    180.1KB
  • vc60.idb
    145KB
  • client.bsc
    1.8MB
  • client.pdb
    465KB
  • client.pch
    3.4MB
  • client.opt
    47.5KB
  • client.dsw
    520B
  • client.cpp
    2KB
  • client.plg
    1.1KB
  • client.ncb
    41KB
  • client.dsp
    3.4KB
  • server
  • Debug
  • vc60.pdb
    76KB
  • server.pch
    3.4MB
  • server.pdb
    473KB
  • server.sbr
    0B
  • server.exe
    180.1KB
  • vc60.idb
    145KB
  • server.ilk
    199.7KB
  • server.obj
    15.9KB
  • server.bsc
    1.8MB
  • server.dsp
    3.4KB
  • server.ncb
    41KB
  • server.opt
    47.5KB
  • server.dsw
    520B
  • server.cpp
    3.4KB
  • server.plg
    1.1KB
内容介绍
#include <stdio.h> #include <windows.h> /***定义端口**/ #define PORT 8888 /***定义最大传输数据量**/ #define MAXDATA 100 /****在入口函数中输入主机IP地址****/ int main(int argc, char** argv) { /*定义标志,接收到第一个client时,不在接收其他client*/ int flag = 1; /*得到socket嵌套字*/ SOCKET server; /*定义发送消息的长度*/ int sdMsgLen; /*启动windows的socket服务*/ WSADATA wsaData; WSAStartup(0x101,&wsaData); char *CloseClient = "bye"; char* CloseC_S = "byebye"; /*定义receive数据长度*/ int receive; int len; /*创建服务器*/ struct sockaddr_in serveraddr; /*创建客户端*/ struct sockaddr_in addrClient; /*将serveraddr置零*/ memset((void*)&serveraddr,0,sizeof(serveraddr)); /*定义家族协议*/ serveraddr.sin_family = AF_INET; /*定义主机地址*/ serveraddr.sin_addr.s_addr = inet_addr(argv[1]);//);"192.168.1.100" /*定义主机端口*/ serveraddr.sin_port = htons(PORT); /*得到socket嵌套字*/ server = socket(AF_INET,SOCK_STREAM,0); /*返回值为-1,未启动windows的socket服务*/ if(server==-1) { perror("socket error!"); } /*绑定成功返回0*/ if(bind(server,(struct sockaddr *)&serveraddr,sizeof(serveraddr)) == -1) { perror("不能进行绑定!"); exit(1); } /*定义客户端嵌套字*/ SOCKET client; /*进入监听客户端连接和监听客户端发送的消息*/ while(1) { /*定义并初始化接收数据的存储*/ char receiveBuffer[MAXDATA] = "\n"; /*定义并初始化发送数据存储*/ char sendBuffer[MAXDATA] = "\n"; /*采用异步发送消息*/ bool sendFlag = false; /*监听客户端*/ if(listen(server,20) == -1) { perror("不能进行监听!"); exit(1); } /*接收到第一个用户后将其锁定,不在接收其他用户*/ if(flag) { len = sizeof(struct sockaddr_in); /*得到客户端的嵌套字*/ client = accept(server,(SOCKADDR*)&addrClient,&len); if(client == -1) { perror("accept error"); continue; } printf("新连接: %s \n",inet_ntoa(addrClient.sin_addr)); /*创建一个消息*/ char* msg = "Hello,Connected Successfully!\n"; int len = strlen(msg); /*得到send的返回值,返回为发送消息的长度.若发送失败则返回-1*/ int sendLen = send(client,msg,len,0) ; if(sendLen == -1) { perror("消息发送失败!\n"); closesocket(client); } msg=0; /*接收到第一个客户端,将其锁定*/ flag = 0; } /*得到接收到消息的长度*/ receive = recv(client,receiveBuffer,MAXDATA,0); /*若消息长度为-1,则接收数据失败*/ if(receive == -1) { perror("接收出错!\n"); /*关闭客户端*/ closesocket(client); } printf("%s\n",receiveBuffer); /*测试客户端发送的结束通话标志*/ if(strcmp(receiveBuffer,CloseClient) == 0) { printf("失去客户端:%s\n",inet_ntoa(addrClient.sin_addr)); flag = 1; closesocket(client); } else if(strcmp(receiveBuffer,CloseC_S) == 0) { closesocket(server); exit(1); } else { printf("Client %s send message : %s\n",inet_ntoa(addrClient.sin_addr),receiveBuffer); /*当接收到消息后,服务器才可以发送消息*/ sendFlag = true; } while(sendFlag) { printf("Your Message:"); /*得到服务器输入的字符串*/ scanf("%s",sendBuffer); sdMsgLen = strlen(sendBuffer); /*得到服务器发送消息的长度*/ int sendLen = send(client,sendBuffer,sdMsgLen,0); if(sendLen == -1) { perror("消息发送失败!"); closesocket(client); } /*结束服务器发送消息模式,改为接收模式*/ sendFlag = false; } } return 0; }
评论
    相关推荐
    • RTSP 服务器C语言
      RTSP是实时流媒体传输协议,服务器和客户端之间通过RTSP协议实现握手和认证过程,通过RTP协议传输视频数据包,本资源通过C语言实现了RTSP服务器的功能。
    • 最新仙镜传说服务器c语言源码
      最新的仙镜传说服务器C语言源码,这是日本最新在布的,数据库类型为文件型数据库。 这个源码相当的完整,只要编译一次后就可以运行了,但得用到客户端的两个文件一个是data.grf另一个是sdata.grf,大家都可以试试!...
    • 守护进程时间服务器C语言实现.rar
      守护进程时间服务器C语言实现,适合编程小白
    • 最新仙镜传说服务器C语言源码
      最新的仙镜传说服务器C语言源码,这是日本最新在布的,数据库类型为文件型数据库。 这个源码相当的完整,只要编译一次后就可以运行了,但得用到客户端的两个文件一个是data.grf另一个是sdata.grf,大家都可以试试!
    • RTSP服务器C语言
      hi3516A输出h264码流,rtsp服务器完成推流,环形缓冲,异步监测。
    • http代理服务器C语言
      以前上TCP/IP课程时做的课程设计,很小的一个HTTP代理服务器,基于socket编程。VC6.0环境的。原创程序。 那时候还是新手,程序很简陋,不过好歹能用。 学校学习相关课程的学生可以参考下,当个课程作业没问题,老手...
    • 最新仙镜传说服务器C语言源码
      最新的仙镜传说服务器C语言源码,这是日本最新在布的,数据库类型为文件型数据库。这个源码相当的完整,只要编译一次后就可以运行了,但得用到客户端的两个文件一个是data.grf另一个是sdata.grf,大家都可以试试!我...
    • 最新仙镜传说服务器C语言源码.zip
      最新仙镜传说服务器C语言源码.zip为游戏源代码,作为开发游戏的一个很好DEMO
    • web服务器 C语言
      一个用C语言编写的WEB服务器,用socket编程
    • C语言并发服务器
      C语言并发服务器,包括客户端和服务器端。