Open ning2510 opened 1 year ago
CMakeLists.txt
添加 cmake,解决 #64 ,需把 main.c 改为 main.cpp
main.c
main.cpp
问题所在 这里减的是 m_iv[0].iov_len - bytes_have_send,应该是 m_write_idx - bytes_have_send,说一下原因:
m_iv[0].iov_len - bytes_have_send
m_write_idx - bytes_have_send
iovec
writev
m_iv[0].iov_len
m_iv[0].iov_len = m_iv[0].iov_len - 30 = 90 - 30 = 60
m_iv[0].iov_len = m_iv[0].iov_len - 60 = 60 - 60 = 0
m_write_idx 第一个 iovec 的头部信息数据长度,而且 m_write_idx 在循环发送的过程中是不会改变的,同时也应该改上面的 if 语句的 m_iv[0].iov_len 也改为 m_write_idx
m_write_idx
if
1. 添加
CMakeLists.txt
添加 cmake,解决 #64 ,需把
main.c
改为main.cpp
2. 修改逻辑问题
问题所在 这里减的是
m_iv[0].iov_len - bytes_have_send
,应该是m_write_idx - bytes_have_send
,说一下原因:iovec
的头部信息数据长度需要多次使用writev
才能发送完的话,那么m_iv[0].iov_len
就会重复减去相同的值iovec
的头部信息数据长度为 90,每次writev
发送的长度为 30。第一次调用writev
后m_iv[0].iov_len = m_iv[0].iov_len - 30 = 90 - 30 = 60
,第二次后m_iv[0].iov_len = m_iv[0].iov_len - 60 = 60 - 60 = 0
,实际还有 30 没有发送m_write_idx
第一个iovec
的头部信息数据长度,而且m_write_idx
在循环发送的过程中是不会改变的,同时也应该改上面的if
语句的m_iv[0].iov_len
也改为m_write_idx