课程设计day4-在虚拟机上搭建TCP服务器

第一步定下自己要用的头文件。

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <unistd.h>

第二步创建主函数和定义socket套接字

int main(int argc, char *argv[])
{
    int sock=socket(AF_INET, SOCK_STREAM, 0);

然后写一个循环。

​
if(-1 == sock)
      { perror("socket");}
      printf("socket is successed\n");

​

然后引用结构体

struct sockaddr_in addr;
      addr.sin_family = AF_INET;
      addr.sin_port = htons(/*端口号*/);
      addr.sin_addr.s_addr = inet_addr("/*ip地址*/");

然后依次为bind,listen,accept创建循环

if(-1== bind(sock,(struct sockaddr *)&addr,sizeof(addr)))
      {perror("bind");}
      printf("bind is successed\n");
    if (-1==listen(sock,5))
     {perror("listen");}
          printf("listen is successed\n");
    int apt = accept(sock,NULL,NULL);
    if(-1==apt)
    {perror("accept");}
     printf("accept is successed\n");

用TCP测试工具测试一下是否连接成功

 一直显示正在连接,但是虚拟机中的accept没有反应。然后找到错误(用了一天的时间才找到)

 

 找到了问题所在,提供管理员权限勾选,一直显示更新配置,过了一段时间后弹窗关闭,还是没有勾选上。这时我用了一位大佬的办法http://t.csdn.cn/HNXZ2 按照这个链接的方法操作后,成功连接!

 创建一个死循环,让连接能一直保持。

while(1)
{
  
         char buf[128]={0};
          int red=read(apt,buf,sizeof(buf));
          if( 0 == red)
          { break;}
          write(apt,buf,red);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘鹏_1117

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值