IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> tcp初始化源码 -> 正文阅读

[网络协议]tcp初始化源码

void tcp_init()
{

int ret=0;
uint64_t start;
if(tcp_mutex==NULL)
	tcp_mutex = nwy_create_mutex();
nwy_sim_get_imei(&imei);
nwy_sdk_file_unlink(tcp_fail_txt);
start = nwy_get_ms();

do
{

	if(nwy_get_ms()-start>=10000)
		break;
	ret = unistep_tcp();
	nwy_ext_echo("tcp ret :%d",ret);
	nwy_sleep(100);
}while(ret != 0);
//�1�7�1�7�1�7�1�7�1�7�1�7�1�7�0�4�1�7�?1�7�1�7�1�7�1�7�1�7�1�9�1�7
if(0 == ret&&send_location_thread==NULL)
	send_location_thread = nwy_create_thread("locationthread", tcp_send_location, NULL, NWY_OSI_PRIORITY_NORMAL, 1024*5, 16);
else 
	nwy_resume_thread(send_location_thread);

}

这里是引用`、、、、、、

在这里插入代码片
int unistep_tcp()
{
	int ret;
	char *url_or_ip = "120.27.18.139";
	char* sptr = nwy_ext_sio_recv_buff;
	int port = 4999;
	int on = 1;
    int opt = 1;
	uint64_t start;
	
	struct sockaddr_in sa;
    struct sockaddr_in *to4 = (struct sockaddr_in *)&sa;
	to4->sin_len = sizeof(struct sockaddr_in);
    to4->sin_family = AF_INET;
    to4->sin_port = htons(port);

	
	ip_addr_t addr = {0};
	char ip_buf[64] = {0};
	
	nwy_set_sim_detect_mode(0);

			  
	ret = nwy_hostname_check(url_or_ip, ip_buf);
    if (ret != NWY_SUCESS) {
    nwy_ext_echo("\r\ntcp ip error:\r\n");
    
    }
    addr.u_addr.ip4.addr = ipaddr_addr(ip_buf);
	
	if(tcp_connect_flag)
    {
        nwy_ext_echo("\r\ntcp alreay connect");
        return -4;
    }
	//�1�7�1�7�1�7�1�0�1�7�1�7�1�7
	if (0 == nwy_ext_check_data_connect()) {
		nwy_ext_echo("\r\ndata call not setup");
		
		nwy_data_start_call_v02_t param_t;
		memset(&param_t,0,sizeof(nwy_data_start_call_v02_t));
		
		param_t.profile_idx = 1;
		param_t.is_auto_recon = 1;
		param_t.auto_re_max = 0;
		param_t.auto_interval_ms = 100;

		
		ret = nwy_data_start_call(1,&param_t);

		
		OSI_LOGI(0, "=DATA=  nwy_data_start_call ret= %d", ret);
		if (ret != NWY_RES_OK)
			nwy_ext_echo("\r\nStart data call fail, result<%d>\r\n",ret);
		else 
		  	nwy_ext_echo("\r\nStart data call ...\r\n");
	}
	nwy_sleep(100);

	//�1�7�1�7�1�7�1�7�1�7�0�7�1�7�1�7�1�7
	if (sock_fd == 0) {
        sock_fd= nwy_socket_open(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    }

	inet_addr_from_ip4addr(&to4->sin_addr, ip_2_ip4(&addr));
	
	nwy_socket_setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, (void *)&on, sizeof(on));

	nwy_socket_setsockopt(sock_fd, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt));
	while(0 != nwy_socket_set_nonblock(sock_fd))
    {
        nwy_ext_echo("\r\nsocket set err\r\n");
		nwy_sleep(100);
    }
	start = nwy_get_ms();



	//�1�7�1�7�1�7�0�5�1�7�1�7�1�7�1�7�1�7
    do
    {
        ret = nwy_socket_connect(sock_fd, (struct sockaddr *)&sa, sizeof(sa));
        if(ret)
        {
        }
        if((nwy_get_ms()-start)>= 10000 )
        {
            nwy_ext_echo("\r\nsocket connect timeout\r\n");
            nwy_socket_shutdown(sock_fd, SHUT_RD);
            nwy_socket_close(sock_fd);
            sock_fd = 0;
            return -1;
        }
        if(ret == -1)
        {
            //nwy_ext_echo("errno=%d\r\n", nwy_socket_errno());
            if( EALREADY == nwy_socket_errno() || EISCONN == nwy_socket_errno() )
            {
                nwy_ext_echo( "\r\nnwy_net_connect_tcp connect ok..");
                tcp_connect_flag = 1;
                break;
            }
            if (EINPROGRESS != nwy_socket_errno() )
            {
                nwy_ext_echo("\r\nconnect errno = %d", nwy_socket_errno());
                nwy_socket_close(sock_fd);
                sock_fd = 0;
                tcp_connect_flag = 0;
                return -2;
            }
		}
        nwy_sleep(100);
    }while(1);
	//�1�7�1�7�1�7�1�7�1�7�1�7�1�7�1�7�1�7�1�7�0�4�1�7�1�9�1�7
    if(tcp_connect_flag)
    {
    	if(NULL == tcp_recv_thread )
        	tcp_recv_thread = nwy_create_thread("tcp_recv_thread",nwy_tcp_recv_func, (void*)&sock_fd, NWY_OSI_PRIORITY_NORMAL, 2048, 4);
		else
			nwy_resume_thread(tcp_recv_thread);
		nwy_ext_echo("\r\ntcp_recv_thread created!");
        if(tcp_recv_thread ==NULL)
        {
            nwy_ext_echo("\r\ncreate tcp recv thread failed, close connect");
            nwy_socket_close(sock_fd);
            sock_fd = 0;
            tcp_connect_flag = 0;
			return -3;
        }
		
		return 0;
    }

}



  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:42:41  更:2021-08-28 09:44:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:42:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码