Fixes in the header not sure if it works tho
This commit is contained in:
parent
b7a2cfb5c3
commit
292bbf5fe0
35
teeworlds.rb
35
teeworlds.rb
|
@ -45,23 +45,26 @@ class NetBase
|
||||||
# // TTTTTTTT
|
# // TTTTTTTT
|
||||||
# // TTTTTTTT
|
# // TTTTTTTT
|
||||||
flags_bits = PacketFlags.new(flags).bits
|
flags_bits = PacketFlags.new(flags).bits
|
||||||
|
num_chunks = 0 # todo
|
||||||
header_bits =
|
header_bits =
|
||||||
'00' + # unused flags? # ff
|
'00' + # unused flags? # ff
|
||||||
flags_bits + # ffff
|
flags_bits + # ffff
|
||||||
@ack.to_s(2).rjust(10, '0') # aa aaaa aaaa
|
@ack.to_s(2).rjust(10, '0') + # aa aaaa aaaa
|
||||||
|
num_chunks.to_s(2).rjust(8, '0') # NNNN NNNN
|
||||||
|
|
||||||
puts "header bits: #{header_bits}"
|
# puts "header bits: #{header_bits}"
|
||||||
header = header_bits.chars.groups_of(4).map do |four_bits|
|
header = header_bits.chars.groups_of(8).map do |eight_bits|
|
||||||
four_bits.join('').to_i(2)
|
eight_bits.join('').to_i(2)
|
||||||
end
|
end
|
||||||
puts "header bytes: #{str_hex(header.pack("C*"))}"
|
# puts "header bytes: #{str_hex(header.pack("C*"))}"
|
||||||
|
|
||||||
header = [0x00, 0x00, 0x01] + str_bytes(@server_token)
|
# header = [0x00, 0x00, 0x01] + str_bytes(@server_token)
|
||||||
|
header = header + str_bytes(@server_token)
|
||||||
data = (header + payload).pack('C*')
|
data = (header + payload).pack('C*')
|
||||||
@s.send(data, 0, @ip, @port)
|
@s.send(data, 0, @ip, @port)
|
||||||
|
|
||||||
p = Packet.new(data, '>')
|
p = Packet.new(data, '>')
|
||||||
puts p
|
puts p.to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -85,17 +88,8 @@ class TwClient
|
||||||
@netbase.send_packet(data)
|
@netbase.send_packet(data)
|
||||||
end
|
end
|
||||||
|
|
||||||
# does not help because server
|
|
||||||
# drops the invalid acks
|
|
||||||
# so we have to finally
|
|
||||||
# create a proper
|
|
||||||
# sendpacket() method
|
|
||||||
# that sends a proper header
|
|
||||||
def send_ctrl_keepalive()
|
def send_ctrl_keepalive()
|
||||||
# size and flags
|
@netbase.send_packet([NET_CTRLMSG_KEEPALIVE])
|
||||||
header = [0x04, 0x0A, 0x00] + str_bytes(@token)
|
|
||||||
msg = header + [NET_CTRLMSG_KEEPALIVE]
|
|
||||||
@s.send(msg.pack('C*'), 0, @ip, @port)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_msg_connect()
|
def send_msg_connect()
|
||||||
|
@ -195,6 +189,8 @@ class TwClient
|
||||||
send_ctrl_with_token
|
send_ctrl_with_token
|
||||||
loop do
|
loop do
|
||||||
tick
|
tick
|
||||||
|
# todo: proper tick speed sleep
|
||||||
|
sleep 0.001
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -212,6 +208,7 @@ class TwClient
|
||||||
when NET_CTRLMSG_TOKEN then on_msg_token(data)
|
when NET_CTRLMSG_TOKEN then on_msg_token(data)
|
||||||
when NET_CTRLMSG_ACCEPT then on_msg_accept
|
when NET_CTRLMSG_ACCEPT then on_msg_accept
|
||||||
when NET_CTRLMSG_CLOSE then on_msg_close
|
when NET_CTRLMSG_CLOSE then on_msg_close
|
||||||
|
when NET_CTRLMSG_KEEPALIVE then # silently ignore keepalive
|
||||||
else
|
else
|
||||||
puts "Uknown control message #{msg}"
|
puts "Uknown control message #{msg}"
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
Loading…
Reference in a new issue