WPF socket通讯 UDP接收消息
客户端:
private Socket socket;
private IPEndPoint ipEndPoint;
private void sendMessageHandler()
{
//服务端ip,端口为192.168.1.1,8085
ipEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.1"), );
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
socket.BeginConnect(ipEndPoint, new AsyncCallback(connectHandler), socket);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
} private void connectHandler(IAsyncResult async)
{
Socket client = async.AsyncState as Socket;
try
{
if (client.Connected)
{
byte[] msg = Encoding.UTF8.GetBytes("hello");
try
{
System.Threading.Thread.Sleep();
socket.Send(msg, , msg.Length, SocketFlags.None);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
else
{
Console.WriteLine("没连接上");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
服务器端:
/// <summary>
/// 数据类
/// </summary>
public class Client
{
public Socket Socket { get; set; }
public byte[] _buffer;
/// <summary>
/// 为该 Socket 开辟的缓冲区
/// </summary>
public byte[] Buffer
{
get
{
if (_buffer == null)
_buffer = new byte[ * ];
return _buffer;
}
}
} private Socket Server;
private void Begin()
{
Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Server.Bind(new IPEndPoint(IPAddress.Any,));
Server.Listen();
Server.BeginAccept(new AsyncCallback(ClientConnectComplete), null);
}
private int _receiveCount = ;//用于统计本次接收到的字节数
private void ClientConnectComplete(IAsyncResult async)
{
Client client = new Client();
try
{
client.Socket = Server.EndAccept(async);
}
catch (Exception)
{
Server.BeginAccept(new AsyncCallback(ClientConnectComplete), null);
return;
}
Console.WriteLine(client.Socket.RemoteEndPoint + " 连接成功!"); try
{
_receiveCount = client.Socket.Receive(client.Buffer, , client.Buffer.Length, SocketFlags.None);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
//接收的消息
string message = Encoding.UTF8.GetString(client.Buffer, , _receiveCount);
//继续接受下一个连接
Server.BeginAccept(new AsyncCallback(ClientConnectComplete), null);
}
服务器端接收UDP字节:
private UdpClient udpClient;
private void ReceiveData()
{
udpClient = new UdpClient(int port);
IPEndPoint udpRemote=null;
while(true)
{
try
{
byte[] udpBytes=udpClient.Receive(ref udpRemote);
Console.Write(udpBytes.Length);
}catch(){}
}
}
WPF socket通讯 UDP接收消息的更多相关文章
- [读书笔记]python3.5实现socket通讯(UDP)
UDP连接: 无连接,从一个端向另一端发送独立的数据分组 使用UDP连接的客户-服务器程序: UDPServer.py import socket serverPort = 50009 serverS ...
- [记读书笔]python3.5实现socket通讯(UDP)
UDP连接: 无连接,从一个端向另一端发送独立的数据分组 使用UDP连接的客户-服务器程序: UDPServer.py import socket serverPort = 50009 serverS ...
- Linux 网络编程六(socket通信UDP版)
//udp接收消息 #include <stdio.h> #include <stdlib.h> #include <string.h> #include < ...
- 闲来无事,写个基于UDP协议的Socket通讯Demo
项目一期已经做完,二期需求还没定稿,所以最近比较闲. 上一篇写的是TCP协议,今天写一下UDP协议.TCP是有连接协议,所以发送和接收消息前客户端和服务端需要建立连接:UDP是无连接协议,所以发送消息 ...
- socket通讯实例与TCP/UDP的区别
一.socket代码实例 1.简单的socket通讯: 服务端代码实例: import socket sock = socket.socket(socket.AF_INET, socket.SOCK_ ...
- Udp实现消息的发送和接收、以及图片的上传
//Udp实现消息的发送和接收 import java.io.IOException; import java.net.DatagramPacket; import java.net.Datagram ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- 基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
今天我们来盘一盘Socket通讯和WebSocket协议在即时通讯的小应用——聊天. 理论大家估计都知道得差不多了,小编也通过查阅各种资料对理论知识进行了充电,发现好多demo似懂非懂,拷贝回来又运行 ...
- python网络-Socket之udp编程(24)
一.udp简介 udp --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议. udp不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地. udp在 ...
随机推荐
- [转]sql利用游标循环,遍历表循环结果集
用 游标(Cursor) + While循环 的方法, 对Customers表中的CompanyName列进行遍历 ) declare pcurr cursor for select distinct ...
- JAVA集合学习
JAVA中有几种常用的集合类.分别是List,Set,Map等 提示:Eclipse中自动导入包的快捷键 Ctrl+Shift+O 一.List类 父接口:该类是Collection集合接口的子接口 ...
- 翻译:wiki中的business logic词条
Business logic 业务逻辑 From Wikipedia, the free encyclopedia 来自Wikipedia,自由的百科全书 In computer software, ...
- Messenger 弹窗的使用
关于Messenger 弹窗的文档及详细的说明请参考 Messenger官网,这时只介绍 Messenger 弹窗的使用 messenger依赖与jquery和Backbone.js,可以和 Bo ...
- 洛谷P2735 电网 Electric Fences
P2735 电网 Electric Fences 11通过 28提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 在本题中,格点是 ...
- 操作笔记:tomcat在正式环境
1,一台服务器有两个容器,比如:jetty,tomcat. 出现问题: jetty启动的时候,tomcat就不能启动了. 此时,需要修改tomcat的配置文件:servler.xml <?xml ...
- SVN与TortoiseSVN实战:补丁详解
硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...
- angular.extend(dst, src)对象拓展
angular.extend(dst, src) 作用:对象的拓展 参数: dst:拓展的对象 src:源对象 返回值:拓展的对象 var dst = {name: 'xxx', country: ...
- ruby中symbol
Symbol 是什么 Ruby 是一个强大的面向对象脚本语言(本文所用 Ruby 版本为1.8.6),在 Ruby 中 Symbol 表示“名字”,比如字符串的名字,标识符的名字. 创建一个 Symb ...
- Android IOS WebRTC 音视频开发总结(五二)-- 亲,咱一起采访webrtc大会的各路专家
本文最早发自我的微信公众号,咱一起采访webrtc大会的各路专家,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处. 亲,作为webrtc大会的推动者之一,大会期间不管是公共场合还是私 ...