首页 > 其他分享 >socket addr赋值

socket addr赋值

时间:2023-12-30 09:03:23浏览次数:29  
标签:addr socket SU port str include sin 赋值

#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;
}

  

标签:addr,socket,SU,port,str,include,sin,赋值
From: https://www.cnblogs.com/hshy/p/17936007.html

相关文章

  • 安卓日志系统(logcat / liblog / logd) 跨进程通信的消耗:日志信息通过socket 发送到 lo
    深入理解安卓日志系统(logcat/liblog/logd)-掘金https://juejin.cn/post/6905368512001556487深入理解安卓日志系统(logcat/liblog/logd)TonyBuilder2020-12-125,456阅读7分钟 一、总体介绍  安卓日志系统是开发者比较熟悉的模块,每个开发者在开发中都会是用......
  • H-ui JQuery 给单选按纽赋值不生效
    H-uiJQuery给单选按纽赋值不生效$("#sex-1").attr('checked',true)原因,iradio-blue样式的原因把下面代码注释掉就可以了$('.skin-minimalinput').iCheck({checkboxClass:'icheckbox-blue',radioClass:'iradio-blue',increa......
  • Socket和Http的通讯原理,遇到攻击会受到哪些影响以及如何解决攻击问题。
    Socket通信原理:Socket是一种应用程序编程接口(API),用于在单个进程或多个进程之间进行通信。它提供了一种灵活的、异步的通信方式,使应用程序可以方便地建立连接、发送数据和接收数据。Socket通信基于TCP/IP协议,它是一种面向连接、可靠的通信方式。Socket通信过程如下:a.创建Socket:创......
  • Python编程该怎么实现socket文件传输
    在网络编程中,Socket是一种常用的通信协议,它可以在计算机之间进行数据传输。在Python中,我们可以使用内置的socket模块来实现Socket文件传输。本文将介绍如何使用Python编程实现Socket文件传输的步骤和示例代码。步骤一:创建服务器端首先,我们需要创建一个服务器端来接收文件。以下是创......
  • Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句
    场景PostGresSQL简介与Windows上的安装教程:PostGresSQL简介与Windows上的安装教程_postgressqlwindows安装免费吗?除了标准SQL语句之外,PostgreSQL还支持使用各种过程语言(例如PL/pgSQL、C、PL/Tcl、PL/Python、PL/Perl、PL/Java等)创建复杂的过程和函数,称为存储过程(StoredPro......
  • WebSocket连接实现实时数据推送
    WebSocket连接实现实时数据推送1、前端1-1、webSocket.js//暴露自定义websocket对象exportconstsocket={//后台请求路径url:"",//websocket对象websocket:null,//websocket状态websocketState:false,//重新连接次数reconnectN......
  • postgresql数据库报“connections on Unix domain socket "/tmp/.s.PGSQL.5432"?”
    使用postgresql数据库的时候经常遇到的问题:[postgres@test~]$psqlpsql:couldnotconnecttoserver:Nosuchfileordirectory Istheserverrunninglocallyandaccepting connectionsonUnixdomainsocket"/tmp/.s.PGSQL.5432"?现象如上,但是数据库是启动状态,将......
  • 记一下在IIS中部署WebSocket服务的经验
    因业务需求需要使用长连接推送数据,这边选择使用.NET框架原生支持的WebSocket技术。 一、版本要求 对于IIS的版本必须是IIS8.0及以上 .NETFramework版本必须为4.5及以上PS:低于上述版本,需要自己实现协议或寻找第三方实现 二、IIS配置在服务器IIS上安装“WebSoc......
  • unigui显示websocket服务端向客户端发送信息【15】
    用WebSocket从服务端直接发送消息给all客户端。1、在ServerModule放TUniThreadTimer 2、timerevent:procedureTUniServerModule.UniThreadTimer1Timer(Sender:TObject);beginBroadcastMessage('update',[......
  • Linux下的socket通信之TCP
    一、客户端  1、创建socket,Tcp套接字描述符  intsockfd=socket(AF_INET,SOCK_STREAM,0))  2、配置服务器地址  structhostent*he=gethostbyname("192.168.2.2")  3、绑定服务器地址到socketbzero(&server,sizeof(server));//把socketaddr_in对象置......