當前位置:首頁 » 操作系統 » udp協議源碼

udp協議源碼

發布時間: 2022-04-20 08:32:04

㈠ 誰能給個Mac 下使用socket 進行UDP 收發數據的源碼

UDP Server程序
1、編寫UDP Server程序的步驟
(1)使用socket()來建立一個UDP socket,第二個參數為SOCK_DGRAM。
(2)初始化sockaddr_in結構的變數,並賦值。sockaddr_in結構定義:
struct sockaddr_in {
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
這里使用「08」作為服務程序的埠,使用「INADDR_ANY」作為綁定的IP地址即任何主機上的地址。
(3)使用bind()把上面的socket和定義的IP地址和埠綁定。這里檢查bind()是否執行成功,如果有錯誤就退出。這樣可以防止服務程序重復運行的問題。
(4)進入無限循環程序,使用recvfrom()進入等待狀態,直到接收到客戶程序發送的數據,就處理收到的數據,並向客戶程序發送反饋。這里是直接把收到的數據發回給客戶程序。

2、udpserv.c程序內容:
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>

#define MAXLINE 80
#define SERV_PORT 8888

void do_echo(int sockfd, struct sockaddr *pcliaddr, socklen_t clilen)
{
int n;
socklen_t len;
char mesg[MAXLINE];

for(;;)
{
len = clilen;
/* waiting for receive data */
n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);
/* sent data back to client */
sendto(sockfd, mesg, n, 0, pcliaddr, len);
}
}

int main(void)
{
int sockfd;
struct sockaddr_in servaddr, cliaddr;

sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* create a socket */

/* init servaddr */
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);

/* bind address and port to socket */
if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)
{
perror("bind error");
exit(1);
}

do_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));

return 0;
}

UDP Client程序
1、編寫UDP Client程序的步驟
(1)初始化sockaddr_in結構的變數,並賦值。這里使用「8888」作為連接的服務程序的埠,從命令行參數讀取IP地址,並且判斷IP地址是否符合要求。
(2)使用socket()來建立一個UDP socket,第二個參數為SOCK_DGRAM。
(3)使用connect()來建立與服務程序的連接。與TCP協議不同,UDP的connect()並沒有與服務程序三次握手。上面我們說了UDP是非連接的,實際上也可以是連接的。使用連接的UDP,kernel可以直接返回錯誤信息給用戶程序,從而避免由於沒有接收到數據而導致調用recvfrom()一直等待下去,看上去好像客戶程序沒有反應一樣。
(4)向服務程序發送數據,因為使用連接的UDP,所以使用write()來替代sendto()。這里的數據直接從標准輸入讀取用戶輸入。
(5)接收服務程序發回的數據,同樣使用read()來替代recvfrom()。
(6)處理接收到的數據,這里是直接輸出到標准輸出上。

2、udpclient.c程序內容:
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>

#define MAXLINE 80
#define SERV_PORT 8888

void do_cli(FILE *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen)
{
int n;
char sendline[MAXLINE], recvline[MAXLINE + 1];

/* connect to server */
if(connect(sockfd, (struct sockaddr *)pservaddr, servlen) == -1)
{
perror("connect error");
exit(1);
}

while(fgets(sendline, MAXLINE, fp) != NULL)
{
/* read a line and send to server */
write(sockfd, sendline, strlen(sendline));
/* receive data from server */
n = read(sockfd, recvline, MAXLINE);
if(n == -1)
{
perror("read error");
exit(1);
}
recvline[n] = 0; /* terminate string */
fputs(recvline, stdout);
}
}

int main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in srvaddr;

/* check args */
if(argc != 2)
{
printf("usage: udpclient <IPaddress>\n");
exit(1);
}

/* init servaddr */
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
{
printf("[%s] is not a valid IPaddress\n", argv[1]);
exit(1);
}

sockfd = socket(AF_INET, SOCK_DGRAM, 0);

do_cli(stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));

return 0;
}

運行例子程序
1、編譯例子程序
使用如下命令來編譯例子程序:
gcc -Wall -o udpserv udpserv.c
gcc -Wall -o udpclient udpclient.c
編譯完成生成了udpserv和udpclient兩個可執行程序。

2、運行UDP Server程序
執行./udpserv &命令來啟動服務程序。我們可以使用netstat -ln命令來觀察服務程序綁定的IP地址和埠,部分輸出信息如下:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:32768 0.0.0.0:*
udp 0 0 0.0.0.0:8888 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 0.0.0.0:882 0.0.0.0:*
可以看到udp處有「0.0.0.0:8888」的內容,說明服務程序已經正常運行,可以接收主機上任何IP地址且埠為8888的數據。
如果這時再執行./udpserv &命令,就會看到如下信息:
bind error: Address already in use
說明已經有一個服務程序在運行了。

3、運行UDP Client程序
執行./udpclient 127.0.0.1命令來啟動客戶程序,使用127.0.0.1來連接服務程序,執行效果如下:
Hello, World!
Hello, World!
this is a test
this is a test
^d
輸入的數據都正確從服務程序返回了,按ctrl+d可以結束輸入,退出程序。
如果服務程序沒有啟動,而執行客戶程序,就會看到如下信息:
$ ./udpclient 127.0.0.1
test
read error: Connection refused
說明指定的IP地址和埠沒有服務程序綁定,客戶程序就退出了。這就是使用connect()的好處,注意,這里錯誤信息是在向服務程序發送數據後收到的,而不是在調用connect()時。如果你使用tcpmp程序來抓包,會發現收到的是ICMP的錯誤信息。

㈡ 有沒有windows下c語言實現udp協議的代碼

php">Windows下C語言的Socket編程例子(TCP和UDP)
一。<TCP>
server端:
復制代碼
1#include"stdafx.h"
2#include<stdio.h>
3#include<winsock2.h>
4
5#pragmacomment(lib,"ws2_32.lib")
6
7intmain(intargc,char*argv[])
8{
9//初始化WSA
10WORDsockVersion=MAKEWORD(2,2);
11WSADATAwsaData;
12if(WSAStartup(sockVersion,&wsaData)!=0)
13{
14return0;
15}
16
17//創建套接字
18SOCKETslisten=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
19if(slisten==INVALID_SOCKET)
20{
21printf("socketerror!");
22return0;
23}
24
25//綁定IP和埠
26sockaddr_insin;
27sin.sin_family=AF_INET;
28sin.sin_port=htons(8888);
29sin.sin_addr.S_un.S_addr=INADDR_ANY;
30if(bind(slisten,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
31{
32printf("binderror!");
33}
34
35//開始監聽
36if(listen(slisten,5)==SOCKET_ERROR)
37{
38printf("listenerror!");
39return0;
40}
41
42//循環接收數據
43SOCKETsClient;
44sockaddr_inremoteAddr;
45intnAddrlen=sizeof(remoteAddr);
46charrevData[255];
47while(true)
48{
49printf("等待連接... ");
50sClient=accept(slisten,(SOCKADDR*)&remoteAddr,&nAddrlen);
51if(sClient==INVALID_SOCKET)
52{
53printf("accepterror!");
54continue;
55}
56printf("接受到一個連接:%s ",inet_ntoa(remoteAddr.sin_addr));
57
58//接收數據
59intret=recv(sClient,revData,255,0);
60if(ret>0)
61{
62revData[ret]=0x00;
63printf(revData);
64}
65
66//發送數據
67char*sendData="你好,TCP客戶端! ";
68send(sClient,sendData,strlen(sendData),0);
69closesocket(sClient);
70}
71
72closesocket(slisten);
73WSACleanup();
74return0;
75}
復制代碼
client端:
復制代碼
1#include"stdafx.h"
2#include<WINSOCK2.H>
3#include<STDIO.H>
4
5#pragmacomment(lib,"ws2_32.lib")
6
7
8intmain(intargc,char*argv[])
9{
10WORDsockVersion=MAKEWORD(2,2);
11WSADATAdata;
12if(WSAStartup(sockVersion,&data)!=0)
13{
14return0;
15}
16
17SOCKETsclient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
18if(sclient==INVALID_SOCKET)
19{
20printf("invalidsocket!");
21return0;
22}
23
24sockaddr_inserAddr;
25serAddr.sin_family=AF_INET;
26serAddr.sin_port=htons(8888);
27serAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
28if(connect(sclient,(sockaddr*)&serAddr,sizeof(serAddr))==SOCKET_ERROR)
29{
30printf("connecterror!");
31closesocket(sclient);
32return0;
33}
34char*sendData="你好,TCP服務端,我是客戶端! ";
35send(sclient,sendData,strlen(sendData),0);
36
37charrecData[255];
38intret=recv(sclient,recData,255,0);
39if(ret>0)
40{
41recData[ret]=0x00;
42printf(recData);
43}
44closesocket(sclient);
45WSACleanup();
46return0;
47}
復制代碼

二.<UDP>
SERVER端
復制代碼
1#include"stdafx.h"
2#include<stdio.h>
3#include<winsock2.h>
4
5#pragmacomment(lib,"ws2_32.lib")
6
7intmain(intargc,char*argv[])
8{
9WSADATAwsaData;
10WORDsockVersion=MAKEWORD(2,2);
11if(WSAStartup(sockVersion,&wsaData)!=0)
12{
13return0;
14}
15
16SOCKETserSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
17if(serSocket==INVALID_SOCKET)
18{
19printf("socketerror!");
20return0;
21}
22
23sockaddr_inserAddr;
24serAddr.sin_family=AF_INET;
25serAddr.sin_port=htons(8888);
26serAddr.sin_addr.S_un.S_addr=INADDR_ANY;
27if(bind(serSocket,(sockaddr*)&serAddr,sizeof(serAddr))==SOCKET_ERROR)
28{
29printf("binderror!");
30closesocket(serSocket);
31return0;
32}
33
34sockaddr_inremoteAddr;
35intnAddrLen=sizeof(remoteAddr);
36while(true)
37{
38charrecvData[255];
39intret=recvfrom(serSocket,recvData,255,0,(sockaddr*)&remoteAddr,&nAddrLen);
40if(ret>0)
41{
42recvData[ret]=0x00;
43printf("接受到一個連接:%s ",inet_ntoa(remoteAddr.sin_addr));
44printf(recvData);
45}
46
47char*sendData="一個來自服務端的UDP數據包 ";
48sendto(serSocket,sendData,strlen(sendData),0,(sockaddr*)&remoteAddr,nAddrLen);
49
50}
51closesocket(serSocket);
52WSACleanup();
53return0;
54}
復制代碼
CLIENT端
復制代碼
1#include"stdafx.h"
2#include<stdio.h>
3#include<winsock2.h>
4
5#pragmacomment(lib,"ws2_32.lib")
6
7intmain(intargc,char*argv[])
8{
9WORDsocketVersion=MAKEWORD(2,2);
10WSADATAwsaData;
11if(WSAStartup(socketVersion,&wsaData)!=0)
12{
13return0;
14}
15SOCKETsclient=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
16
17sockaddr_insin;
18sin.sin_family=AF_INET;
19sin.sin_port=htons(8888);
20sin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
21intlen=sizeof(sin);
22
23char*sendData="來自客戶端的數據包. ";
24sendto(sclient,sendData,strlen(sendData),0,(sockaddr*)&sin,len);
25
26charrecvData[255];
27intret=recvfrom(sclient,recvData,255,0,(sockaddr*)&sin,&len);
28if(ret>0)
29{
30recvData[ret]=0x00;
31printf(recvData);
32}
33
34closesocket(sclient);
35WSACleanup();
36return0;
37}

㈢ 請教C#WinForm下的UDP代碼

UDP和WINFORM沒有半毛錢關系,

UDP是一種網路通訊協議,常用於單片機通訊或者底層通訊,不需要握手,

至於代碼,不明白你到底要什麼代碼,一般來講UDP需要聲明服務端和客戶端 ,並接受和發送數據,

思路上就是服務端聲明自己的IP、 埠, 然後開啟監聽,

客戶端向指定的IP埠發送數據,

當然服務端也可以發送,客戶端也可以監聽,

最需要處理的一般是非同步接收後的操作,

下面是個簡單的UDP通訊的代碼,服務端功能基本如下,客戶端可以比葫蘆畫瓢,

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Net.Sockets;
usingSystem.Net;
usingSystem.Threading;
usingSystem.IO;
namespaceUdpChatExample
{
///<summary>
///UDP伺服器對象
///</summary>
publicclassUDPServerClass
{
(stringMessage);//定義委託事件
;
publicUDPServerClass()
{
//獲取本機可用IP地址
IPAddress[]ips=Dns.GetHostAddresses(Dns.GetHostName());
foreach(IPAddressipainips)
{
if(ipa.AddressFamily==AddressFamily.InterNetwork)
{
MyIPAddress=ipa;//獲取本地IP地址
break;
}
}
Note_StringBuilder=newStringBuilder();
PortName=8080;

}

;

///<summary>
///偵聽埠名稱
///</summary>
publicintPortName;

///<summary>
///本地地址
///</summary>
;

///<summary>
///日誌記錄
///</summary>
publicStringBuilderNote_StringBuilder;
///<summary>
///本地IP地址
///</summary>
publicIPAddressMyIPAddress;

publicvoidThread_Listen()
{
//創建一個線程接收遠程主機發來的信息
ThreadmyThread=newThread(ReceiveData);
myThread.IsBackground=true;
myThread.Start();
}
///<summary>
///接收數據
///</summary>
privatevoidReceiveData()
{
IPEndPointlocal=newIPEndPoint(MyIPAddress,PortName);
ReceiveUdpClient=newUdpClient(local);
IPEndPointremote=newIPEndPoint(IPAddress.Any,0);
while(true)
{
try
{
//關閉udpClient時此句會產生異常
byte[]receiveBytes=ReceiveUdpClient.Receive(refremote);
stringreceiveMessage=Encoding.Default.GetString(receiveBytes,0,receiveBytes.Length);
//receiveMessage=ASCIIEncoding.ASCII.GetString(receiveBytes,0,receiveBytes.Length);
MessageArrived(string.Format("{0}來自{1}:{2}",DateTime.Now.ToString(),remote,receiveMessage));
//try
//{
//Byte[]sendBytes=Encoding.ASCII.GetBytes("Isanybodythere?");
//ReceiveUdpClient.Send(sendBytes,sendBytes.Length,local);
//}
//catch(Exceptione)
//{
//}
//break;

}
catch
{
break;
}
}
}

///<summary>
///添加日誌信息到Note_StringBuilder
///</summary>
publicvoidAddMessage_Note_StringBuilder()
{

}
}
}

㈣ 易語言UDP協議的外網聊天軟體源碼

要使用UDP的話,需要有一個在外網上的伺服器來給你進行連接,..

㈤ 誰能給個C語言socket 通信,用UDP協議的代碼例子。。

我的是包含的#include <sys/socket.h>,參考一下吧
<udp_client.c>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>

int main(void)
{
int sfd; char buf[1024]; int n, i;
struct sockaddr_in serv_addr, cli_addr;
socklen_t len;

sfd = socket(AF_INET, SOCK_DGRAM, 0);

memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8000);
inet_pton(AF_INET, "192.168.0.36", &serv_addr.sin_addr.s_addr);

while(1) {
if(fgets(buf, 1024, stdin) == NULL)
break;
sendto(sfd, buf, strlen(buf), 0, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
n = recvfrom(sfd, buf, 1024, 0, NULL, NULL);
write(STDOUT_FILENO, buf, n);
}
close(sfd);

return 0;
}

<udp_server.c>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>

int main(void)
{
int sfd; char buf[1024]; int n, i;
struct sockaddr_in serv_addr, cli_addr;
socklen_t len;

sfd = socket(AF_INET, SOCK_DGRAM, 0);

memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8000);
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

bind(sfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

while(1) {
len = sizeof(cli_addr);
n = recvfrom(sfd, buf, 1024, 0, (struct sockaddr *)&cli_addr, &len);
for(i = 0; i < n; i++)
buf[i] = toupper(buf[i]);
sendto(sfd, buf, n, 0, (struct sockaddr *)&cli_addr, len);
}
close(sfd);

return 0;
}
請求採納,謝謝!

㈥ TCP/IP UDP 協議

底層的東西都已經封裝好了 你建udp/tcp連接 使用socket 其實你在創建socket實例的時候後台已經在socket的內部幫你把數據包格式包頭都填好了 只給你留出api來設置一些參數 像telnet ssl http這些上層的協議 也都有相應的包實現了 你只要應用那個jar包使用api就可以了 你如果想看內部實現 可以去找相應的源碼看 但是一般這種成熟協議其實你看源碼代價很大 但是應用卻不多 當然 如果你想學習代碼結構框架實現 倒是可以看看的

㈦ 高分求求android 端發出消息給pc端(udp協議)的源代碼

http://blog.csdn.net/xiaoxiaobian3310903/article/details/7870064自己去down吧!

㈧ 誰能給我一個基於DUP協議的可靠數據傳輸的源代碼

如何用vb的winsocket解決udp文件傳送丟包的問題

udp協議是1種無連接的協議,他和tcp協議比較有傳輸速度快,佔用資源少的問題。
但是由於udp協議本身沒有自動找包的功能,因此經常會出現丟包的現象,會造成傳送的文件丟包的現象
因為時間匆忙和水平有限,本人在效率上沒有作優化,只是簡單的實現,請大家自己看源碼吧
注釋:
主要功能:把文件猜成4k大小的包 在包頭+上包的長度 接受了1個包判斷長度是否和接受的長度相符如果

符合那麼就繼續發,如果出現丟包那麼就從發
希望大家有什麼好的建議通知我,我會盡量完善的
Option Explicit
'==============================================
'===============================
'udp傳文件
'客戶端
'作者: 影子
'================================
'==============================================
Dim FileNumber As Integer '用來存文件的句柄
Dim LenFile As Long '文件的長度
Private Sub Command2_Click()
closefile
End Sub

Private Sub Form_Load()
Winsock0.LocalPort = 5698
Winsock0.Bind
beginfile
End Sub
Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
Dim FileByte() As Byte
Winsock0.GetData FileByte, vbArray + vbByte '接收類型為:位元組數組
Dim mendByte() As Byte, i As Long, j As Long
Dim temp As String, temp1 As String
'獲得包長
j = UBound(FileByte)
'合並包頭
For i = 0 To 7 Step 2
temp = temp & Chr(FileByte(i))
Next
'比較長度看丟包沒有
If Val(temp) = j Then

ReDim mendByte(j - 8)
' 提出包頭
For i = 0 To j - 8
mendByte(i) = FileByte(i + 7)
Next
' 寫文件
Put #FileNumber, , mendByte
' 發送繼續發送的請求
frmmain.Winsock0.SendData "ok"
Else
'出現丟包,請求重發
frmmain.Winsock0.SendData "no"
End If
End Sub

Public Sub beginfile()
FileNumber = FreeFile '取得未使用的文件號
Open "c:\aaa.exe" For Binary As #FileNumber '打開文件
End Sub

Public Sub closefile() '關閉文件句柄
Close #FileNumber
End Sub

Option Explicit
Dim GetFileNum As Integer
Dim LenFile As Long
Dim Sendbaye() As Byte '發送的包
'===============================
'udp傳文件
'作者: 影子
'伺服器端
'================================

Private Sub Command1_Click()
GetFileNum = FreeFile '取得未使用的文件號
LenFile = FileLen("d:\aa.rar") '獲得需傳送的文件的長度
Open "d:\aa.rar" For Binary As #GetFileNum '打開需傳送的文件
Command1.Enabled = False
' 傳送文件
Call TCPSendFile(frmmain.Winsock0, GetFileNum, SplitFile)
Text1.Text = Now
End Sub

Private Sub Form_Load()
frmmain.Winsock0.RemoteHost = "192.168.0.12" '伺服器ip
frmmain.Winsock0.RemotePort = 5698

End Sub
'=========================================================================
'為了清晰,下面分別用兩個子過程來完成計算這次還可以傳多少個位元組的數據和傳送數據
'==========================================================================
Private Function SplitFile() As Long '拆包
On Error Resume Next
Dim GetCount As Long
'計算出這次可發送的位元組數
If LenFile >= 4000 Then
GetCount = 4000
LenFile = LenFile - GetCount
Else
GetCount = LenFile
LenFile = LenFile - GetCount
End If
SplitFile = GetCount

End Function
Private Sub TCPSendFile(objWinSock As Winsock, FileNumber As Integer, SendLen As Long)
Dim FileByte() As Byte, i As Long, j As Long
Dim temp As String
ReDim Sendbaye(0)

Dim tempa As String * 4
ReDim FileByte(SendLen - 1)
tempa = SendLen + 7
Sendbaye = tempa ' 把長度負值給包頭
Get #FileNumber, , FileByte '讀取文件
ReDim Preserve Sendbaye(SendLen + 7) '把包頭+到文件頭
For i = 0 To UBound(FileByte)
Sendbaye(i + 7) = FileByte(i)
Next
frmmain.Winsock0.SendData Sendbaye
End Sub

Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
Dim str As String
frmmain.Winsock0.GetData str
Select Case str
Case "ok"
'成功繼續發送
If LenFile = 0 Then '發送完成
MsgBox "成功"
Exit Sub
End If
Call TCPSendFile(frmmain.Winsock0, GetFileNum, SplitFile)
Case "no"
'不成功重發上一個包
frmmain.Winsock0.SendData Sendbaye
End Select
End Sub

㈨ 如何編程使上位機(界面c#)與下位機(單片機keil c)通過TCP/UDP協議來實現通信,最好有源代碼,謝謝~~

看來兄弟是想用單片機弄網路終端啊,但是你的問題描述不夠精準, 如果你是想單片機和PC之間實現ip/tcp方式通訊, 那麼在單片機端有支持這一協議可以和串口連接的的晶元, PC端的程序實際上你沒必要求什麼源碼, 有源碼你也不見得編譯過去, 這個看看C#關於網路編程的幾步走就行了, 很簡單的. 這個方式實際最後還是單片機的串口在起作用, 但是好處是可以遠距離和多設備通信, 不知道這個是不是你的本意, 如果你僅僅是為了完成實驗想要實現單片機和winform的通訊那麼沒必要非用tcp協議, 串口還是很方便的, 你可以winform端綁定一個埠, 然後用VSPM虛擬串口軟體來與單片機通訊, 外設就稍多了.希望我的回答可以幫到你, 不明白的可以追問!

㈩ 急求C#程序,用UDP協議實現客戶端與伺服器之間的信息交互!謝謝

為每個請求開個線程,執行一次Send()操作,就Thread.Sleep(1000);外邊是While(IsWorking){...}

還是自己寫代碼會比較有收獲

熱點內容
編程圖片平移 發布:2024-11-16 07:41:06 瀏覽:652
黃金數演算法 發布:2024-11-16 07:40:15 瀏覽:65
門鎖動態密碼是什麼樣的 發布:2024-11-16 07:39:33 瀏覽:912
namespacelinux 發布:2024-11-16 07:28:13 瀏覽:352
html去緩存 發布:2024-11-16 07:05:22 瀏覽:723
如何限制蘋果ip段訪問伺服器 發布:2024-11-16 07:02:57 瀏覽:661
knn演算法原理 發布:2024-11-16 06:56:18 瀏覽:854
c語言第一章 發布:2024-11-16 06:49:07 瀏覽:51
伺服器ip黑名單和網站ip黑名單區別 發布:2024-11-16 06:45:56 瀏覽:888
上傳圖片命名規則 發布:2024-11-16 06:28:37 瀏覽:557