服务端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks; namespace UdpsocketServer
{
class Program
{
static void Main(string[] args)
{
int recv;
byte[] revData = new byte[1024];
byte[] sendData = new byte[1024];
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 6666);
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
newsock.Bind(ip);
Console.WriteLine("我是服务端,主机名:{0}", Dns.GetHostName());
Console.WriteLine("等待客户端连接.....");
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
recv = newsock.ReceiveFrom(revData, ref Remote);
Console.WriteLine("我是服务端,客户端{0}连接成功", Remote.ToString());
Console.WriteLine(Encoding.Unicode.GetString(revData, 0, recv));
string welcome = "你好,我是服务器";
sendData = Encoding.Unicode.GetBytes(welcome);
newsock.SendTo(sendData, sendData.Length, SocketFlags.None, Remote);
while (true)
{
sendData = new byte[1024];
recv = newsock.ReceiveFrom(sendData, ref Remote);
string recvData = string.Format("客户端{0}发送:{1}", Remote.ToString(), Encoding.Unicode.GetString(sendData, 0, recv));
Console.WriteLine(recvData);
// string recvData =string.Format("服务器接收到数据{0}", Encoding.ASCII.GetString(data, 0, recv));
// byte.Parse(recvData);
string recvDateSucceed = string.Format("服务器已收到.");
sendData = Encoding.Unicode.GetBytes(recvDateSucceed);
newsock.SendTo(sendData, sendData.Length, SocketFlags.None, Remote);
}
}
}
}

客户端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks; namespace UdpsocketDemo
{
class Program
{
static void Main(string[] args)
{
byte[] data = new byte[1024];
string input, stringData;
//构建TCP 服务器
Console.WriteLine("这是客户端, 主机名是 {0}", Dns.GetHostName());
//设置服务IP,设置TCP端口号
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6666);
//定义网络类型,数据连接类型和网络协议UDP
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
string welcome = "你好服务器,我是客户端! ";
data = Encoding.Unicode.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ip);
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)sender; byte[] sendData = new byte[1024];
//对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制
int recv = server.ReceiveFrom(sendData, ref Remote);
Console.WriteLine("我是客户端,从服务器端: {0}接收到消息 ", Remote.ToString());
Console.WriteLine(Encoding.Unicode.GetString(sendData, 0, recv));
while (true)
{
input = Console.ReadLine();
//退出
if (input == "exit")
break;
server.SendTo(Encoding.Unicode.GetBytes(input), Remote);
byte[] recvData = new byte[1024];
recv = server.ReceiveFrom(recvData, ref Remote);
stringData = string.Format("服务器{0}发送:{1}", Remote.ToString(), Encoding.Unicode.GetString(recvData, 0, recv));
Console.WriteLine(stringData);
}
Console.WriteLine("服务停止.");
server.Close(); } }
}

说明: 客户端直接发送内容,服务器端直接接收

udpsocket 通信C#例子的更多相关文章

  1. 一个 Java 的 Socket 服务器和客户端通信的例子

    一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请 ...

  2. socket上http协议应用(使用socket进行http通信的例子,准备好报头以后,简单read/write就可以了)

    前几天看socket本有点晕, 好不容易弄明白了,才发现公司服务器用的是http的. 找了好久也没发现linux下直接用http的api, 不过今日偶然发现了使用socket进行http通信的例子, ...

  3. swoole父进程和子进程之间通信的例子

    <?php /** 这是一个swoole父进程和子进程之间通信的例子 */ //进程创建成功后回调处理 function handle(swoole_process $worker){ //从进 ...

  4. java即时通信小例子

    学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...

  5. udp-->socket通信原理

    UDP数据通讯原理     UDP数据通讯分服务端(软件)和客户端端:     服务端(软件)(服务器)先运行,服务端,不需要事先知道客户端IP和port     客户端(软件)(客户端机器)后运行, ...

  6. C#使用 UdpClient 类进行简单通信的例子

    UdpClient 类提供了一些简单的方法,用于在阻止同步模式下发送和接收无连接 UDP 数据报. 因为 UDP 是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接.但您可以选择使用下面两 ...

  7. ajax 异步 通信 小例子 servlet与 jsp异步 post方法

    post请求 url后面加参数 接收不到的,必须 放到send("use"=user)形式 还要加上 xhr.setRequestHeader("Content-Type ...

  8. ajax 异步 通信 小例子 servlet与 jsp异步 get

    get  请求参数通过 url那里写进去,然后send(null) html文件和 servlet进行通信 通过ajax 进行通信 <!DOCTYPE html PUBLIC "-// ...

  9. 【基于不同设备厂商在处理vlan之间通信配置例子】

    H3C: Dot1q子接口实现vlan之间的通信 一:根据项目需求搭建好拓扑图如下: 二:配置 HUAWEI: CISCO

随机推荐

  1. 在Strust2 使用datatimepicker 标签引发的一系列问题

    问题:出现无法识别的问题 原因:Strust2.1开始,对于ajax类的标签不再使用<%@ taglib prefix="s" uri="/struts-tags& ...

  2. 【块状树】【树链剖分】bzoj1036 [ZJOI2008]树的统计Count

    很早之前用树链剖分写过,但是代码太长太难写,省选现场就写错了. #include<cstdio> #include<algorithm> #include<cstring ...

  3. [CF735E/736C]Ostap and Tree

    题目大意: 一个$n(n\le100)$个点的树,将一些点染成黑点,求满足每个点到最近黑点的距离$\le k(k\le\min(20,n-1))$的方案数. 思路: 树形DP. 用$f[i][j]$表 ...

  4. 【MySQL笔记】Excel数据导入Mysql数据库的实现方法——Navicat

    很多公司尤其有点年头的公司,财务业务部门的各种表单都是excel来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...

  5. vs生成命令和属性的宏

    在vs属性页面中编辑后期生成事件... 下面是vs中宏的描述信息. http://i.cnblogs.com/EditPosts.aspx?opt=1 高级用法: 磨刀不误砍柴工——VS生成事件

  6. 使用Jenkins部署Spring Boot

    原文:http://www.cnblogs.com/ityouknow/p/7899349.html jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boo ...

  7. 百度display name为中文导致奔溃,productName和budlename区分出来

    把"xxx-info.plist"中的"Bundle display name"的值改成了英文,或者把它的值修改成系统默认的"${PRODUCT_NA ...

  8. C# log4net打不出日志 (IIS项目)

    配置文件都配了,引用也引用了,调用也是对的,网上找博客也找不到,疯掉了. 后来腆着脸问了一个前辈,他告诉我的,添完就好了. 给项目的这个文件,添加这行代码: [assembly: log4net.Co ...

  9. Virtualbox环境中安装Oracle 11gr2 RAC(ASM)

    系统Oracle Linux 6.5,Oracle 11.2.0.1 终于开始安装ASM和RAC的行程了.开始前需要想清楚的几个事情: 如何规划网络配置(配置多网卡,实现连通性,规划内外网,eth0, ...

  10. servlet之request和response的使用区分

    有的时候在写servlet程序时,我总是被一个方法该用request去调用.还是用response去调用而困惑.从而造成编程时间的延长. 我在区分request和response的使用时,使用的方法是 ...