码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 网络编程 day3


    1. #include
    2. #define SER_PORT 6678 //服务器端口号
    3. #define SER_IP "192.168.115.64"//服务器IP地址
    4. #define CLI_PORT 6666 //客户端端口号
    5. #define CLI_IP "192.168.115.93"
    6. int main(int argc, const char *argv[])
    7. {
    8. //1.创建套接字,用于连接使用
    9. int cfd=socket(AF_INET,SOCK_STREAM,0);
    10. if(cfd==-1)
    11. {
    12. perror("socket error");
    13. return -1;
    14. }
    15. printf("cfd=%d\n",cfd);
    16. //设置端口号快速重用
    17. int reuse=1;
    18. if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
    19. {
    20. perror("setsockopt error");
    21. return -1;
    22. }
    23. printf("端口快速重用成功\n");
    24. //2.给套接字绑定地址信息
    25. //2.1填充地址信息结构体
    26. struct sockaddr_in sin;
    27. sin.sin_family=AF_INET; //地址族
    28. sin.sin_port=htons(CLI_PORT);//端口号网络字节序
    29. sin.sin_addr.s_addr=inet_addr(CLI_IP);//IP地址网络字节序
    30. //2.2绑定工作
    31. if(bind(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
    32. {
    33. perror("bind error");
    34. return -1;
    35. }
    36. printf("bind success _%d_\n",__LINE__);
    37. //3.连接服务器
    38. //3.1填充要连接的服务器地址信息结构体
    39. struct sockaddr_in cin;
    40. cin.sin_family=AF_INET;//IPV4通信
    41. cin.sin_port=htons(SER_PORT);//服务器端口号
    42. cin.sin_addr.s_addr=inet_addr(SER_IP);//服务器的主机地址
    43. //3.2连接服务器
    44. if(connect(cfd,(struct sockaddr*)&cin,sizeof(cin))==-1)
    45. {
    46. perror("connect error");
    47. return -1;
    48. }
    49. printf("connect success _%d_\n",__LINE__);
    50. //4.收发数据
    51. char buf[5]={0xff,0x02,0x00,0,0xff};//用于接收要发送的
    52. char ch;//用于存储wasd
    53. while(1)
    54. {
    55. //从终端获取输入的字符'w','a','s','d'
    56. scanf("%c",&ch);
    57. switch(ch)
    58. {
    59. case 'w':
    60. {
    61. buf[3]++;
    62. buf[2]=0x00;
    63. if(buf[3]>90)
    64. {
    65. buf[3]=0;
    66. continue;
    67. }
    68. break;
    69. }
    70. case 'a':
    71. {
    72. buf[3]--;
    73. buf[2]=0x01;
    74. if(buf[3]<0)
    75. {
    76. buf[3]=90;
    77. continue;
    78. }
    79. break;
    80. }
    81. case 's':
    82. {
    83. buf[3]--;
    84. buf[2]=0x00;
    85. if(buf[3]<0)
    86. {
    87. buf[3]=90;
    88. continue;
    89. }
    90. break;
    91. }
    92. case 'd':
    93. {
    94. buf[3]++;
    95. buf[2]=0x01;
    96. if(buf[3]>180)
    97. {
    98. buf[3]=0;
    99. continue;
    100. }
    101. break;
    102. }
    103. }
    104. //发送给服务器端
    105. if(send(cfd,buf,sizeof(buf),0)==-1)
    106. {
    107. perror("send error");
    108. return -1;
    109. }
    110. }
    111. //5.关闭套接字
    112. close(cfd);
    113. return 0;
    114. }

  • 相关阅读:
    MySQL—索引—基础语法
    表单识别(三)
    【C++】C++ 语言对 C 语言的加强 ③ ( 类型检查增强 - 所有函数和变量必须有类型 | 新增 bool 类型 - bool 类型简介 )
    B2B撮合管理系统优势有哪些?如何助力传统仪器仪表制造业企业数字化转型
    Spring Boot 使用自定义注解和自定义线程池实现异步日志记录
    【基础算法】圆周率的多种方法求算 & C++实现
    备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口
    【JavaEE 进阶(二)】Spring MVC(下)
    mongodb安装及使用
    【微信小程序】了解小程序的宿主环境
  • 原文地址:https://blog.csdn.net/u014137683/article/details/134022121
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号