原型:
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、羅江ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的羅江網(wǎng)站制作公司
int WINAPI icePub_UdpSendAndReceive(char *sendBuffer,int bufferLen,char *strIP,int port,char *receiveBuffer,int timeoutSeconds,int retryCounts)
輸入:sendBuffer 發(fā)送的數(shù)據(jù)
bufferLen sendBuffer的長度
strIP 服務(wù)端地址
port 端口
timeoutSeconds 超時時間,秒
retryCounts 接收失敗重發(fā)次數(shù)
輸出:receiveBuffer 接收的數(shù)據(jù)
返回碼:接收數(shù)據(jù)的長度
char buff[1024],buff2[1024*10];
int receiveLen;
strcpy(buff,"tag:01\r\ncommand:reboot\r\ndata:none\r\n");
typedef int (WINAPI ICEPUB_UDPSENDANDRECEIVE)(char *sendBuffer,int bufferLen,char *strIP,int port,char *receiveBuffer,int timeoutSeconds,int retryCounts);
ICEPUB_UDPSENDANDRECEIVE *icePub_UdpSendAndReceive = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
icePub_UdpSendAndReceive=(ICEPUB_UDPSENDANDRECEIVE *)GetProcAddress(hDLLDrv,"icePub_UdpSendAndReceive");
if(icePub_UdpSendAndReceive)
receiveLen=icePub_UdpSendAndReceive(buff,strlen(buff),"192.168.1.111",6000,buff2,15,1);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
AfxMessageBox(buff2);
bind一下就可以
int s = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in local= {0};
local.sin_family = AF_INET;
local.sin_port = htons(60200);
inet_aton("192.168.3.100", (struct in_addr *)local.sin_addr.s_addr);//換成你的IP地址??
bind(s, (struct sockaddr *)local, sizeof(local));
Windows下C語言的Socket編程例子(TCP和UDP)
一。??TCP
server端:
復(fù)制代碼
1?#include?"stdafx.h"
2?#include?stdio.h
3?#include?winsock2.h
4?
5?#pragma?comment(lib,"ws2_32.lib")
6?
7?int?main(int?argc,?char*?argv[])
8?{
9?????//初始化WSA
10?????WORD?sockVersion?=?MAKEWORD(2,2);
11?????WSADATA?wsaData;
12?????if(WSAStartup(sockVersion,?wsaData)!=0)
13?????{
14?????????return?0;
15?????}
16?
17?????//創(chuàng)建套接字
18?????SOCKET?slisten?=?socket(AF_INET,?SOCK_STREAM,?IPPROTO_TCP);
19?????if(slisten?==?INVALID_SOCKET)
20?????{
21?????????printf("socket?error?!");
22?????????return?0;
23?????}
24?
25?????//綁定IP和端口
26?????sockaddr_in?sin;
27?????sin.sin_family?=?AF_INET;
28?????sin.sin_port?=?htons(8888);
29?????sin.sin_addr.S_un.S_addr?=?INADDR_ANY;?
30?????if(bind(slisten,?(LPSOCKADDR)sin,?sizeof(sin))?==?SOCKET_ERROR)
31?????{
32?????????printf("bind?error?!");
33?????}
34?
35?????//開始監(jiān)聽
36?????if(listen(slisten,?5)?==?SOCKET_ERROR)
37?????{
38?????????printf("listen?error?!");
39?????????return?0;
40?????}
41?
42?????//循環(huán)接收數(shù)據(jù)
43?????SOCKET?sClient;
44?????sockaddr_in?remoteAddr;
45?????int?nAddrlen?=?sizeof(remoteAddr);
46?????char?revData[255];?
47?????while?(true)
48?????{
49?????????printf("等待連接...\n");
50?????????sClient?=?accept(slisten,?(SOCKADDR?*)remoteAddr,?nAddrlen);
51?????????if(sClient?==?INVALID_SOCKET)
52?????????{
53?????????????printf("accept?error?!");
54?????????????continue;
55?????????}
56?????????printf("接受到一個連接:%s?\r\n",?inet_ntoa(remoteAddr.sin_addr));
57?????????
58?????????//接收數(shù)據(jù)
59?????????int?ret?=?recv(sClient,?revData,?255,?0);????????
60?????????if(ret??0)
61?????????{
62?????????????revData[ret]?=?0x00;
63?????????????printf(revData);
64?????????}
65?
66?????????//發(fā)送數(shù)據(jù)
67?????????char?*?sendData?=?"你好,TCP客戶端!\n";
68?????????send(sClient,?sendData,?strlen(sendData),?0);
69?????????closesocket(sClient);
70?????}
71?????
72?????closesocket(slisten);
73?????WSACleanup();
74?????return?0;
75?}
復(fù)制代碼
client端:
復(fù)制代碼
1?#include?"stdafx.h"
2?#include?WINSOCK2.H
3?#include?STDIO.H
4?
5?#pragma??comment(lib,"ws2_32.lib")
6?
7?
8?int?main(int?argc,?char*?argv[])
9?{
10?????WORD?sockVersion?=?MAKEWORD(2,2);
11?????WSADATA?data;?
12?????if(WSAStartup(sockVersion,?data)?!=?0)
13?????{
14?????????return?0;
15?????}
16?
17?????SOCKET?sclient?=?socket(AF_INET,?SOCK_STREAM,?IPPROTO_TCP);
18?????if(sclient?==?INVALID_SOCKET)
19?????{
20?????????printf("invalid?socket?!");
21?????????return?0;
22?????}
23?
24?????sockaddr_in?serAddr;
25?????serAddr.sin_family?=?AF_INET;
26?????serAddr.sin_port?=?htons(8888);
27?????serAddr.sin_addr.S_un.S_addr?=?inet_addr("127.0.0.1");?
28?????if?(connect(sclient,?(sockaddr?*)serAddr,?sizeof(serAddr))?==?SOCKET_ERROR)
29?????{
30?????????printf("connect?error?!");
31?????????closesocket(sclient);
32?????????return?0;
33?????}
34?????char?*?sendData?=?"你好,TCP服務(wù)端,我是客戶端!\n";
35?????send(sclient,?sendData,?strlen(sendData),?0);
36?
37?????char?recData[255];
38?????int?ret?=?recv(sclient,?recData,?255,?0);
39?????if(ret??0)
40?????{
41?????????recData[ret]?=?0x00;
42?????????printf(recData);
43?????}
44?????closesocket(sclient);
45?????WSACleanup();
46?????return?0;
47?}
復(fù)制代碼
二.?UDP
SERVER?端
復(fù)制代碼
1?#include?"stdafx.h"
2?#include?stdio.h
3?#include?winsock2.h
4?
5?#pragma?comment(lib,?"ws2_32.lib")?
6?
7?int?main(int?argc,?char*?argv[])
8?{
9?????WSADATA?wsaData;
10?????WORD?sockVersion?=?MAKEWORD(2,2);
11?????if(WSAStartup(sockVersion,?wsaData)?!=?0)
12?????{
13?????????return?0;
14?????}
15?
16?????SOCKET?serSocket?=?socket(AF_INET,?SOCK_DGRAM,?IPPROTO_UDP);?
17?????if(serSocket?==?INVALID_SOCKET)
18?????{
19?????????printf("socket?error?!");
20?????????return?0;
21?????}
22?
23?????sockaddr_in?serAddr;
24?????serAddr.sin_family?=?AF_INET;
25?????serAddr.sin_port?=?htons(8888);
26?????serAddr.sin_addr.S_un.S_addr?=?INADDR_ANY;
27?????if(bind(serSocket,?(sockaddr?*)serAddr,?sizeof(serAddr))?==?SOCKET_ERROR)
28?????{
29?????????printf("bind?error?!");
30?????????closesocket(serSocket);
31?????????return?0;
32?????}
33?????
34?????sockaddr_in?remoteAddr;
35?????int?nAddrLen?=?sizeof(remoteAddr);?
36?????while?(true)
37?????{
38?????????char?recvData[255];??
39?????????int?ret?=?recvfrom(serSocket,?recvData,?255,?0,?(sockaddr?*)remoteAddr,?nAddrLen);
40?????????if?(ret??0)
41?????????{
42?????????????recvData[ret]?=?0x00;
43?????????????printf("接受到一個連接:%s?\r\n",?inet_ntoa(remoteAddr.sin_addr));
44?????????????printf(recvData);????????????
45?????????}
46?
47?????????char?*?sendData?=?"一個來自服務(wù)端的UDP數(shù)據(jù)包\n";
48?????????sendto(serSocket,?sendData,?strlen(sendData),?0,?(sockaddr?*)remoteAddr,?nAddrLen);????
49?
50?????}
51?????closesocket(serSocket);?
52?????WSACleanup();
53?????return?0;
54?}
復(fù)制代碼
CLIENT?端
復(fù)制代碼
1?#include?"stdafx.h"
2?#include?stdio.h
3?#include?winsock2.h
4?
5?#pragma?comment(lib,?"ws2_32.lib")?
6?
7?int?main(int?argc,?char*?argv[])
8?{
9?????WORD?socketVersion?=?MAKEWORD(2,2);
10?????WSADATA?wsaData;?
11?????if(WSAStartup(socketVersion,?wsaData)?!=?0)
12?????{
13?????????return?0;
14?????}
15?????SOCKET?sclient?=?socket(AF_INET,?SOCK_DGRAM,?IPPROTO_UDP);
16?????
17?????sockaddr_in?sin;
18?????sin.sin_family?=?AF_INET;
19?????sin.sin_port?=?htons(8888);
20?????sin.sin_addr.S_un.S_addr?=?inet_addr("127.0.0.1");
21?????int?len?=?sizeof(sin);
22?????
23?????char?*?sendData?=?"來自客戶端的數(shù)據(jù)包.\n";
24?????sendto(sclient,?sendData,?strlen(sendData),?0,?(sockaddr?*)sin,?len);
25?
26?????char?recvData[255];?????
27?????int?ret?=?recvfrom(sclient,?recvData,?255,?0,?(sockaddr?*)sin,?len);
28?????if(ret??0)
29?????{
30?????????recvData[ret]?=?0x00;
31?????????printf(recvData);
32?????}
33?
34?????closesocket(sclient);
35?????WSACleanup();
36?????return?0;
37?}