bind函数测试,TCP客户端指定端口号连接服务端

2019-10-23 19:31 来源:未知

#include <errno.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
main()
{
  int nSocket;
  struct sockaddr_in sin;
  //struct sockaddr_in *p = &sin;
  nSocket = socket(PF_INET,SOCK_STREAM,0);
  bzero(&sin,sizeof(struct sockaddr_in));
  //memset(p,0x00,sizeof(struct sockaddr_in));
  sin.sin_family=AF_INET;
  sin.sin_addr.s_addr=htonl(INADDR_ANY);
  sin.sin_port=htons(5678);
  bind(nSocket,(struct sockaddr *)&sin,sizeof(struct sockaddr_in));
  printf("Bind success! n");
  close(nSocket);
  return;

linux TCP客商端钦命端口号连接服务端

}

 

警告内容

Linux上边貌似没有怎么直接展开或许关闭端口的授命,因为若仅仅只是展开了端口而不把它与经过相关联的话,端口的敞开与关闭就突显毫无意义了(开了端口却从没程序管理进来的数量)。相当于说,Linux里面端口的移动与经过是严密相连的,要是想要关闭某些端口,那么只要杀掉它对应的经过就能够了。

testSocketBind.c: In function ‘main’:

   www.2cto.com  

testSocketBind.c:13: warning: incompatible implicit declaration of built-in function ‘bzero’

客商端代码

化解方法:

 

加上#include <string.h>

#include <stdio.h>

图片 1

#include <stdlib.h>

#include <strings.h>

#include <arpa/inet.h>

#include <sys/socket.h>

 

int main(){

    int sockfd = socket(AF_INET,SOCK_STREAM,0);

    if(sockfd==-1)perror("sock");

    struct sockaddr_in mine,dest;

    

    bzero(&mine,sizeof(mine));

    mine.sin_family = AF_INET;

    mine.sin_port = htons(3334);

    inet_pton(AF_INET,"192.168.1.100",&mine.sin_addr);

    

    bzero(&dest,sizeof(dest));

    dest.sin_family = AF_INET;

    dest.sin_port = htons(9999);

    inet_pton(AF_INET,"192.168.1.100",&dest.sin_addr);

 

    int b = bind(sockfd,(struct sockaddr*)&mine,sizeof(mine));

    if(b==-1)perror("");

    

    int c = connect(sockfd,(struct sockaddr*)&dest,sizeof(dest));

    if(c!=0)perror("");

 

    close(sockfd);

 

}

 

服务端代码

 

#include <stdio.h>

#include <stdlib.h>

#include <sys/socket.h>

#include <arpa/inet.h>

#include <strings.h>

 

int main(){

    int sockfd = socket(AF_INET,SOCK_STREAM,0);

    struct sockaddr_in addr;

    bzero(&addr,sizeof(addr));

    addr.sin_family = AF_INET;

    addr.sin_port = htons(9999);

    inet_pton(AF_INET,"192.168.1.100",&addr.sin_addr);

 

    bind(sockfd,(struct sockaddr*)&addr,sizeof(addr));

    listen(sockfd,5);

    while(1){

        struct sockaddr_in c_addr;

        int c_len = sizeof(c_addr);

        bzero(&c_addr,c_len);

        int c = accept(sockfd,(struct sockaddr*)&addr,&c_len);

        if(c==-1)perror("");

        char ip[40]={0};

        int port;

        inet_ntop(AF_INET,&addr.sin_addr,ip,40);

        port = ntohs(addr.sin_port);

        printf("from %s:%dn",ip,port);

        close(c);

 

    }

 

}

 

确立连接后用

netstat -anp|grep 端口号查看端口状态及进程号

若想关闭端口连接 ,使用kill -9 进度号关闭

-a 展现全部移动的TCP连接,以致正在监听的TCP和UDP端口  

-n 以数字情势表示地址和端口号N

-p 列出与端口监听或一而再相关的经过

 

netstat -tuln   列出具备inet地址类的端口监听状态

netstat -tn     列出全数TCP左券的总是意况

 

TCP客商端钦点端口号连接服务端 Linux下风貌似未有怎么直接打开可能关闭端口的授命,因为若仅仅只是翻开了端口而不把它与经过相联...

TAG标签:
版权声明:本文由990888藏宝阁发布于计算机网络,转载请注明出处:bind函数测试,TCP客户端指定端口号连接服务端