日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反向Socket连接

發布時間:2024/4/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反向Socket连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mark一下,以后的開發過程中可能會經常用到socket相關的東西,所以mark一下最基礎的東西。

?

//服務端

?

#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")

void main()
{
?//初始化套接字版本
?WSAData wsaData;
?WSAStartup(MAKEWORD(2,2),&wsaData);

?//創建Socket
?SOCKET Socket_Server;
?Socket_Server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
?if (Socket_Server == INVALID_SOCKET)
?{
??printf("Socket error");
??return;
?}

?//初始化地址
?sockaddr_in ClientAddr;
?ClientAddr.sin_family = AF_INET;
?ClientAddr.sin_port = htons(8000);
?ClientAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

?//循環連接
?while (true)
?{
??//連接
??if (connect(Socket_Server,(LPSOCKADDR)&ClientAddr,sizeof(ClientAddr)) == SOCKET_ERROR)
??{
???printf("connect error/n");
???Sleep(3000);
???continue;
??}
??printf("連接成功");
??break;?
?}

?//發送
?if (send(Socket_Server,"上線了",sizeof("上線了"),0) == SOCKET_ERROR)
?{
??printf("send error");
??return;
?}

?//關閉Socket
?closesocket(Socket_Server);
?WSACleanup();
}

?

//-----------------------------------------------------------------------------------------------------------

?

//客戶端

?

CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)StartListen,NULL,NULL,NULL);

?

DWORD StartListen(LPARAM *lparam)
{
?WSAData wsaData;

?//初始化套接字版本
?WSAStartup(MAKEWORD(2,2),&wsaData);?
?
?SOCKET Socket_Client;
?
?//創建套接字
?Socket_Client = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
?if (Socket_Client == INVALID_SOCKET)
?{
??printf("socket error");
??return 0;
?}
?
?sockaddr_in sockaddr;

?//初始化地址信息
?sockaddr.sin_family = AF_INET;
?sockaddr.sin_port = htons(8000);?//8000端口
?sockaddr.sin_addr.S_un.S_addr = INADDR_ANY;?//表示所有可用的地址
?
?//綁定套接字
?if (bind(Socket_Client,(LPSOCKADDR)&sockaddr,sizeof(sockaddr)) == SOCKET_ERROR)
?{
??printf("bind error");
??return 0;
?}
?
?//監聽
?if (listen(Socket_Client,5) == SOCKET_ERROR)
?{
??printf("listen error");
??return 0;
?}

?SOCKET Socket_Server;?//客戶端
?sockaddr_in remoteAddr;?//服務端地址
?int Addrlen = sizeof(remoteAddr);
?char revData[255];

?while (true)
?{
??//接收連接
??Socket_Server = accept(Socket_Client,(LPSOCKADDR)&remoteAddr,&Addrlen);
??if (Socket_Client == INVALID_SOCKET)
??{
???printf("accept error");
???continue;
??}
??OutputDebugString("連接成功");
??
??//接收數據
??int ret = recv(Socket_Server,revData,sizeof(revData),0);
??if (ret > 0)
??{
???MessageBox(0,revData,0,0);
??}
?
?}
?
?closesocket(Socket_Server);??//關閉socket
?WSACleanup();
}

?

?

總結

以上是生活随笔為你收集整理的反向Socket连接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。