作者smvenjoy (好好坏坏~~)
看板C_and_CPP
标题[问题] 利用C写网路传送程式问题
时间Thu Mar 3 23:29:38 2016
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
问题(Question):
想在PC上利用C语言写一个网路传送程式传送封包到一台机器上(IP:192.168.1.55),
查了一般的socket写法,
程式码摘要如下:
if((m_sockXmt = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET){
return;
}
m_st_xmt.sin_family = AF_INET;
m_st_xmt.sin_port = htons(40000);
m_st_xmt.sin_addr.s_addr = inet_addr("192.168.1.55");
经执行上述程式码後,在wireshark软体上所看如下:
192.168.1.1 192.168.1.55 UDP 50 Source port:57956 Destination port:40000
由以上可以看到Destination port已经被设定为40000,机器的ip:192.168.1.55
也设定正确了。
想请问如果我也想设定Source port为固定值,
譬如我每次开始执行程式时,皆可从wireshark软体上看到
Source port被设定为50000。
想请问该如何再加程式码才可以让我的Source port被设定为固定值50000,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.72.175.103
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1457018981.A.736.html
※ 编辑: smvenjoy (42.72.175.103), 03/03/2016 23:31:37
1F:推 CaptainH: send之前先bind 03/03 23:54
2F:→ smvenjoy: 楼上可以再说明详细一点吗? 谢谢! 03/04 00:09
3F:→ smvenjoy: bind(m_sockXmt,(LPSOCKADDR)&m_st_xmt,sizeof(m_st_xmt 03/04 00:19
4F:→ smvenjoy: ) 有在send前加此行指令,但SourcePortNumber仍不为定值 03/04 00:21
5F:→ alex70266: bind(dest_sock, &src_addr, sizeof(src_addr)) 03/04 21:39
6F:→ alex70266: 你bind的address struct看起来是目标 03/04 21:43
7F:推 zha0: srcport系统会自已给,如果你硬要,那你就自已刻封包, 03/05 20:20
8F:→ zha0: 用rawsocket的方式去传. 03/05 20:20