解除tcpip端口被占用 c++
时间: 2023-12-02 09:42:07 浏览: 39
以下是解除TCP/IP端口被占用的C++代码示例:
```c++
#include <winsock2.h>
#include <iostream>
using namespace std;
int main()
{
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != 0) {
cout << "WSAStartup failed: " << iResult << endl;
return 1;
}
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET) {
cout << "Socket 创建失败,Exit!" << endl;
WSACleanup();
return 1;
}
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8080); // 要解除占用的端口号
addr.sin_addr.s_addr = htonl(INADDR_ANY);
// 绑定端口
iResult = bind(sock, (SOCKADDR*)&addr, sizeof(addr));
if (iResult == SOCKET_ERROR) {
cout << "端口已被占用" << endl;
// 解除端口占用
int optval = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&optval, sizeof(optval));
// 再次绑定端口
iResult = bind(sock, (SOCKADDR*)&addr, sizeof(addr));
if (iResult == SOCKET_ERROR) {
cout << "端口绑定失败" << endl;
closesocket(sock);
WSACleanup();
return 1;
}
}
cout << "端口绑定成功" << endl;
closesocket(sock);
WSACleanup();
return 0;
}
```