在讲正文前,我们有必要复习下关闭TCP连接的过程:四次挥手。
假设A和B建立TCP连接并进行数据传输,当A的数据发送完后,需要主动发起断开连接的请求:
- A发送FIN报文,发起断开连接的请求
- B收到FIN报文后,首先回复ACK确认报文
- B把自己的数据发送完,发送FIN报文,发起断开连接的请求
- A收到FIN报文后,回复ACK,等待2MSL时间后,释放socket占用的所有连接资源
- B收到ACK后,释放socket占用的所有连接资源
在CAPL中,有三个函数可以关闭TCP连接:
首先让client和server建立连接:
然后使用tcpClose()实现上面的TCP关闭连接过程。
client端代码:
on key 'c'
{
tcpClose(clientSocket);
}
server端代码:
void OnTcpClose(dword socket, long result)
{
if (result != 0)
return;
if (socket == serverDataSocekt)
{
tcpS