根据斗鱼给的开发者手册,用struct构建出应用层协议头,发送登入请求,建立连接成功但没有从服务器传回有效消息。

代码不长,边学socket边写的注释。

抓包显示成功的建立了连接,图片放在最后。

#include

#include

#include

#pragma comment (lib, "ws2_32.lib")

char* getIP() {

struct hostent *host = gethostbyname("openbarrage.douyutv.com");

if (!host) {

printf("Get ip error\n");

system("pause");

exit(0);

}

return inet_ntoa(*(struct in_addr*)host->h_addr_list[0]);

}

struct postData{

int data_len;//4字节

int data_len_2;//4字节

short message = 689;//2字节

char secreat = 0;//1字节

char presv = 0;//1字节

char body[31] = "type@=loginreq/roomid@=846805/";

};

int main() {

WSADATA wsaData;

WSAStartup(MAKEWORD(2, 2), &wsaData); //初始化

SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //创建socket

//SOCKADDR为通用结构体,同时处理IPv4和IPv6

//sockaddr_in为IPv4的结构体 sockaddr_in6为IPv6的结构体

//SOCKADDR中IP地址和端口在一起,强制转换类型时转换

sockaddr_in sockAddr;

memset(&sockAddr, 0, sizeof(sockAddr));

sockAddr.sin_family = PF_INET; //类型:IPv4

sockAddr.sin_addr.s_addr = inet_addr("123.150.206.162");//getIP()返回

/*

sin_addr为结构体

struct in_addr{

in_addr_t s_addr; //32位的IP地址

};

*/

sockAddr.sin_port = htons(8601);

connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));

postData post_Data;

post_Data.data_len = sizeof(post_Data);

post_Data.data_len_2 = sizeof(post_Data);

send(sock, (char*)&post_Data, sizeof(postData), 0);

printf("发送成功,接收中");

char bufRec[10000];

recv(sock, bufRec, sizeof(bufRec), 0);

printf("Message form server: %s\n", bufRec);

closesocket(sock);

//终止使用 DLL

WSACleanup();

system("pause");

return 0;

}

协议组成 众所周知,受 TPC 最大传输单元(MTU)限制及连包机制影响,应用层协

议需自己设计协议头,以保证丌同消息的隔离性和消息完整性。斗鱼后台协议头 设计如下:

登录请求消息 该消息用于完成登陆授权,完整的数据部分应包含的字段如下: type@=loginreq/roomid@=301712/

字段说明 type 表示为“登陆请求”消息,固定为 loginreq roomid 所登录房间的 ID

服务端消息格式 服务端端向客户端发送消息时,头部消息类型字段为 690。

2.4.1 登录响应消息 服务端返回登陆响应消息,完整的数据部分应包含的字段如下: type@=loginres/userid@=0/roomgroup@=0/pg@=0/sessionid@=0/us

ername@=/nickname@=/is_signined@=0/signin_count@=0/live_stat@

=0/npv@=0/best_dlev@=0/cur_lev@=0/

socket用户名登录c语言,用C语言socket登入斗鱼弹幕服务器的问题相关推荐

  1. linux系统创建组、用户。并指定用户所属组,指定用户登录时的起始目录,自动创建登入目录

    步骤1: 执行命令:groupadd xj 创建组xj 步骤2: 执行命令:useradd -g xj xj -d /home/xj -s /bin/bash -m -g 指定用户所属群组.第一个xj ...

  2. erp登入显示查找服务器地址,如何查询软件的登录服务器地址

    如何查询软件的登录服务器地址 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 安 ...

  3. 用mysql制作一个登录_连接数据库制作一个简单的登入页面1

    1.组成部分: 登入页面--enter_form.jsp JavaBean--testLogin.java(私有变量:id,userName,passWord) 查询页面--userQuery.jsp ...

  4. 退出linux用户登录命令,Linux系统中用户的登入登出命令详解

    loginlogin 命令:使用户放弃现在的使用的身份,重新登录系统.也可以在后面加入用户,在直接输入密码,登录系统 例: 复制代码 代码如下: [root@localhost test]# logi ...

  5. 梦幻西游 登入不显示服务器失败怎么办,《梦幻西游三维版》登录不进去怎么解决 登录失败原因分析...

    导 读 梦幻西游三维版登录不进去如何解决想必还有不少小伙伴不太清楚,一起往下看九游小编整理的图文介绍,一起来看看吧. 梦幻西游三维版中,登录不进去解决办法有两种,第一种:稍等片刻再尝试登录即可.第二种 ...

  6. 文华软件登录显示请选择服务器,文华随身行 请先登入云服务器

    文华随身行 请先登入云服务器 内容精选 换一换 本节操作介绍切换虚拟私有云的操作步骤.仅支持单网卡切换虚拟私有云.切换虚拟私有云前如果重装/切换过云服务器的操作系统,请先登录云服务器,验证重装/切换时 ...

  7. C语言网络编程:socket函数

    函数描述 头文件 <sys/types.h> <sys/socket.h> 函数使用int socket(int domain, int type, int protocol) ...

  8. c语言实现socket转json,C++实现json形式的Socket传输图片

    本文实例为大家分享了C++实现json形式的Socket传输图片的具体代码,供大家参考,具体内容如下 大致流程:客户端读取图片,经过Base64编码,转成字符串的形式,保存到json中,通过socke ...

  9. IPC编程C语言,4. UNIX Domain Socket IPC

    4. UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络so ...

最新文章

  1. android 动态获取权限有哪些,Android 6.0+ 动态获取权限
  2. Microbiome:宏蛋白质组揭示健康人肠道菌群的功能,离真相更近了一步
  3. 在Windows平台下使用安装GCC
  4. 提高团队整体能力-同一片天“技术交流会”
  5. 看文艺青年怎么玩微信客户端
  6. Python学习笔记--函数
  7. php的cgi的设置,apache中配置php支持模块模式、cgi模式和fastcgi模式
  8. Java -- 注解 annotation
  9. java socket 二次发送_发过2次帖子,都没有了,再发。JAVA中SOCKET通信中的数据压缩问题...
  10. TFS在项目中DevOps落地进程(下)
  11. 结构型模式——桥接模式
  12. Android RIL源码研究笔记 の ril (一)
  13. C# MVC 用户登录状态判断
  14. Android热修复Java类_Android 热修复(一)
  15. CF 61E 树状数组+离散化 求逆序数加强版 三个数逆序
  16. java反射 获取方法_java反射——获取类的方法信息
  17. 软件:分享几款实用的内网穿透工具,值得学习一下!
  18. 大一c语言基础试题及答案,大一大学计算机基础期末考试试题「附答案」
  19. VTN4系列多通道振弦模拟信号采集仪模拟通道值和振弦传感器温度通道值修正
  20. 瑞芯微板子人脸识别demo展现

热门文章

  1. 诺基亚n73支持java_最强S60直板机王!诺基亚N系列三代N73详尽评测
  2. CodeForces 732A-Buy a Shovel
  3. 来自底层的五星级体验
  4. 网络安全应急响应技术实战指南
  5. PC端聊天机器人界面
  6. 运维常见问题及解决策略
  7. 江苏大学张世兵计算机学院,高校辅导员法律意识存在的不足与提升路径.pdf
  8. 11. 排序(Sorting)
  9. Dijkstra Floyd RRT A* D* LPA* D*-Lite 算法比较
  10. FFmpeg:进行qsv加速转码,以及如何动态更改编码器的选项(附完整源代码)