当前位置:   article > 正文

TCP网络连接_在线tcp客户端

在线tcp客户端

 Socket(套接字)是一种通讯机制,它包含一整套的调用接口和数据结构的定义,它给应用进程提供了使用如 TCP/UDP等网络协议进行网络通讯的手段。

客户端通常的调用序列是:(1) 调用socket函数创建套接字。 (2)调用connect连接服务器端。 (3)调用I/O函数(read/write)与服务器端通讯。 (4)调用close关闭套接字。

服务器端通常的调用序列为: (1)调用socket函数创建套接字。 (2)调用bind指定本地地址和端口。 (3)调用listen启动监听。(4)设置服务端标志 调用accept从已连接列队中提取客户连接。 (5)调用I/O函数(read/write)与客户端通讯。 (6)调用close关闭连接。

客户端代码:

  1. #include"common.h"
  2. struct stu
  3. {
  4. int id;
  5. char name[32];
  6. };
  7. int main()
  8. {
  9. int fd,ret;
  10. struct stu s;
  11. struct sockaddr_in saddr;
  12. fd=socket(AF_INET,SOCK_STREAM,0);
  13. if(fd<0)
  14. {
  15. perror("socket create");
  16. return -1;
  17. }
  18. saddr.sin_family=AF_INET ;
  19. saddr.sin_port=htons(8800) ;
  20. saddr.sin_addr.s_addr=inet_addr("127.0.0.1") ;
  21. ret=connect(fd,(struct sockaddr*)&saddr,sizeof(saddr));
  22. if(ret<0)
  23. {
  24. perror("connect");
  25. close(fd);
  26. return -1;
  27. }
  28. while(1)
  29. {
  30. printf("please input id and name\n");
  31. scanf("%d %s",&s.id,s.name);
  32. ret=write(fd,&s,sizeof(struct stu));
  33. if(ret<0)
  34. {
  35. perror("write");
  36. }
  37. }
  38. close(fd);
  39. }

服务端代码:

  1. #include"common.h"
  2. struct stu
  3. {
  4. int id;
  5. char name[32];
  6. };
  7. int main()
  8. {
  9. int fd,nfd;
  10. int ret;
  11. int addr_len;
  12. char buf[1024];
  13. struct stu s;
  14. struct sockaddr_in saddr,caddr;
  15. fd=socket(AF_INET,SOCK_STREAM,0);
  16. saddr.sin_family=AF_INET ;
  17. saddr.sin_port=htons(8800) ;
  18. saddr.sin_addr.s_addr=inet_addr("127.0.0.1") ;
  19. ret=bind(fd,(struct sockaddr*)&saddr,sizeof(saddr));
  20. if(ret<0)
  21. {
  22. perror("bind");
  23. }
  24. ret=listen(fd,20);
  25. if(ret<0)
  26. {
  27. perror("listen");
  28. }
  29. addr_len=sizeof(caddr);
  30. nfd=accept(fd,(struct sockaddr*)&caddr,&addr_len);
  31. if(nfd<0)
  32. {
  33. perror("accept");
  34. close(fd);
  35. return -1;
  36. }
  37. ret=read(nfd,&s,sizeof(struct stu));
  38. if(ret<=0)
  39. {
  40. perror("read");
  41. }
  42. else if(ret==0)
  43. {
  44. printf("tcp broken.\n");
  45. }
  46. else
  47. {
  48. printf("id:%d name:%s\n",s.id,s.name);
  49. }
  50. /*
  51. ret=write(nfd,"hello",5);
  52. if(ret<0)
  53. {
  54. perror("write");
  55. }
  56. else
  57. {
  58. printf("write ret:%d\n",ret);
  59. }*/
  60. close(nfd);
  61. close(fd);
  62. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/886272
推荐阅读
相关标签
  

闽ICP备14008679号