socket addr赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <string>
using namespace std;
 
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdarg.h>
#include <arpa/inet.h>
typedef uint32_t u32;
typedef uint8_t u8;
typedef uint16_t u16;
typedef struct sockaddr_in  SU_addr;
 
 
#undef IP_MAX_SIZE
#define IP_MAX_SIZE 32
 
void SU_socketSetAddr(SU_addr* addr,char* ip, u16 port)
{
    memset(addr, 0, sizeof(struct sockaddr_in));
    addr->sin_family     = AF_INET;
    addr->sin_port           = htons(port);
    addr->sin_addr.s_addr    = inet_addr(ip);
}
 
char* SU_addrToString(SU_addr* addr, char* str, int len)
{
    if (len < 24 || addr == NULL || str == NULL)
  
        return NULL;
 
    ::inet_ntop(addr->sin_family, &(addr->sin_addr), str, len);
    sprintf(str, "%s:%d", str, ntohs(addr->sin_port));
  cout<<"str is"<<str<<endl;
    return str;
}
 
/*将ip地址字符串"x.x.x.x:p"转化成SU_addr结构*/
static int string_to_addr(const char* str, SU_addr* addr)
{
    char ipstr[IP_MAX_SIZE] = { 0 };
    char* pos = (char*)str;
    char* dest = ipstr;
    uint16_t port = 0;
 
    while (*pos != '\0'){
        if (*pos == ':')
            break;
        *dest++ = *pos ++;
    }
 
    if (*pos == '\0')
        return -1;
 
    pos++;
    port = atoi(pos);
    SU_socketSetAddr(addr, ipstr, port);
    return 0;
}
 
int main()
{
  SU_addr addr;
  string_to_addr("192.168.1.100:8000",&addr);
  cout<<ntohs(addr.sin_port)<<endl;
  char str[32];
  cout<<SU_addrToString(&addr,str,32)<<endl;
//  cout<<addr.sin_addr.s_addr<<endl;
 // cout<<str<<endl;
   
   
   
  return 0;
}

  

posted on   lydstory  阅读(30)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-12-30 ddns
2022-12-30 UVCIOC_CTRL_SET
2022-12-30 ONVIF
2022-12-30 威视达康
2022-12-30 v4l2-Video for linux2
2021-12-30 CFX_BasicArray
2021-12-30 开源基础库的性能

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示