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在 ...
随机推荐
- vc 递归删除非空文件夹
我觉得这是一个非常不错的递归例子 头文件 #pragma once #include <atlstr.h> #include <io.h> #include <strin ...
- c语言解数独
来自:http://my.oschina.net/lovewxm/blog/288043?p=1 #include <stdio.h> #include <stdlib.h> ...
- 一目了然c++虚基类!
#include <IOSTREAM.H> //基类 class CBase ...{ protected: int a; public: CBase(int na) ...{ a=na; ...
- 华为OJ平台——输出最小的k个数
输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint ...
- 图形化Cisco设备管理实践(附安装配置视频)
图形化Cisco设备管理实践 Ciscoworks 2000是Cisco公司推出的基于SNMP协议的网络管理系统,通过它网络管理人员可以方便快捷地完成设备的配置.管理.监控和故障分析等任务, Cisc ...
- WIN32 DLL中使用MFC
最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记 一.修 ...
- MyBatis学习系列三——结合Spring
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...
- 旅游风景展示应用源码iPad版
一款iPad旅游风景展示应用源码,一款iPad旅游景区展示应用.效果很炫,左右可以以书本的效果进行翻页,双击左边显示该风景区的信息,双击右边可以显示该风景区的地理位置.<ignore_js_op ...
- Linux下vi编辑器粘贴复制剪切功能
RedHat 9.0 Linux下vi编辑器实现简单的粘贴复制剪切功能": 如果想把文件内的第三行内容黏贴到第十五行: 1.进入你的文件,(处于命令模式,而不是编辑模式) 2.将你的光标移到 ...
- WAMP环境下访问PHP提示下载PHP文件
原因是服务器没有加载到PHP文件 到http.conf下加载 AddType application/x-httpd-php .php AddType application/x-httpd-php ...