C#与C++如何实现UDP通信

1.背景

两个程序(一个是C#做成的窗体程序,一个是C++做成的窗体程序)

2.问题:

C#与C++如何实现UDP通信??????????求大佬帮忙根据图片显示,做个sample程序,代码中最好能填加上注释(本人没学过这一块内容),求大佬帮帮忙!!!!!!!!!!!!!求帮忙!!!求帮忙!!!

3.想要的效果

左边这个界面上(用C#做成)的TextBox中输入“你好吗?”点击发送,右边的BB界面上(用C++做成)的能显示“你好吗?”,即实现UDP通信

4.相关图片
图片说明

回答

c#发送控制台程序代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Net.Sockets;

using System.Net;

using System.Net.NetworkInformation;

namespace ConsoleApplication3

{

class Program

{

static void Main(string[] args)

{

string sendString = null;//要发送的字符串

byte[] sendData = null;//要发送的字节数组

UdpClient client = null;

IPAddress remoteIP = IPAddress.Parse("127.0.0.1");

int remotePort = 8080;

IPEndPoint remotePoint = new IPEndPoint(remoteIP, remotePort);//实例化一个远程端点

while (true)

{

sendString = Console.ReadLine();

sendData = Encoding.Default.GetBytes(sendString);

client = new UdpClient();

client.Send(sendData, sendData.Length, remotePoint);//将数据发送到远程端点

client.Close();//关闭连接

}

}

}

}

c++接收控制台代码:

#include <Winsock2.h>

#include <stdio.h>

#pragma comment(lib, "ws2_32.lib")

void main(){

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD(1, 1);

err = WSAStartup(wVersionRequested, &wsaData);

if (err != 0) {

return;

}

if (LOBYTE(wsaData.wVersion) != 1 ||

HIBYTE(wsaData.wVersion) != 1) {

WSACleanup();

return;

}

//创建套接字

SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0);

//创建地址结构体.

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

addrSrv.sin_family = AF_INET;

addrSrv.sin_port = htons(6000);

//绑定套接字和地址.

bind(sockSrv, (SOCKADDR *)&addrSrv, sizeof(SOCKADDR));

char recvBuf[100] = {0};

char sendBuf[100];

char tempBuf[200];

SOCKADDR_IN addrClient;

int len = sizeof(SOCKADDR);

while (1){

//接收数据.

recvfrom(sockSrv, recvBuf, 100, 0, (SOCKADDR *)&addrClient, &len);

if ('q' == recvBuf[0]){

sendto(sockSrv, "q", 1, 0, (SOCKADDR *)&addrClient, sizeof(SOCKADDR));

printf("chat end ! \n");

break;

}

sprintf(tempBuf, "%s say: %s", inet_ntoa(addrClient.sin_addr), recvBuf);

printf("%s\n", tempBuf);

printf("please input data:\n");

gets(sendBuf);

//发送数据.

sendto(sockSrv, sendBuf, 100, 0, (SOCKADDR*)&addrClient, sizeof(SOCKADDR));

}

//关闭套接字.

closesocket(sockSrv);

//关闭套接字库.

WSACleanup();

}

以上是 C#与C++如何实现UDP通信 的全部内容, 来源链接: utcz.com/a/45547.html

回到顶部