Udp通信

简介:

有了笔记(二)中的积累,udp的感觉就简单多了。


#region usings
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
#endregion

namespace NetStudy
{
    
delegate void AppendItem(object o);
    
public partial class MyTalkUdp : Form
    {
        
#region Vars
        Thread serverThread;
        EndPoint  remoteIpep;
        Socket serverSock, clicentSock;

        AppendItem AddItem;
        
void addItem(object o)
        {
            listBox.Items.Add(o);
        }
        
string message;
        
#endregion

        
#region Constructions
        
public MyTalkUdp()
        {
            InitializeComponent();
            AddItem 
= new AppendItem(addItem);
        }
        
#endregion

        
#region Events
        
private void btSent_Click(object sender, EventArgs e)
        {
            IPAddress[] ipalist 
= Dns.GetHostAddresses(txtTarget.Text.Trim());
            
if (ipalist.GetLength(0<= 0)
            {
                listBox.Items.Add(
"Invalid Target!");
                
return;
            }
            IPAddress ipa 
= ipalist[0];
            remoteIpep 
= new IPEndPoint(ipa, 8989);
            message 
= txtMessage.Text;
            txtMessage.Clear();
            SentMessage();
            listBox.Items.Add(
"TO " + remoteIpep.ToString() + ":" + message);
        }

        
private void MyTalkUdp_Load(object sender, EventArgs e)
        {
            serverThread 
= new Thread(new ThreadStart(StartListen));
            serverThread.Start();
        }
        
#endregion

        
#region Methods
        
void StartListen()
        {
            serverSock 
= new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            serverSock.Bind(
new IPEndPoint(IPAddress.Any, 8989));
            
byte[] buf=new byte[1024];
            IPEndPoint remotePoint
=null;
            
int bufLen = 0;
            
bool isKeepAlive=true;
            
string data;
            
while (isKeepAlive)
            {
                
try
                {
                    bufLen 
= serverSock.Available;
                    
if (bufLen != 0)
                    {
                        serverSock.ReceiveFrom(buf, SocketFlags.None,
ref remoteIpep);
                        data
=System.Text.Encoding.Unicode.GetString(buf, 0, bufLen);
                        
if (!string.IsNullOrEmpty(data))
                        {
                            listBox.Invoke(AddItem, 
"FROM " + remoteIpep.ToString() + ":" + data);
                        }
                    }
                }
                
catch (SocketException sexc)
                {
                    listBox.Invoke(AddItem, sexc.Message);
                }
            }
            
        }
        
void SentMessage()
        {
            
if (string.IsNullOrEmpty(message)) return;
            
byte[] buf=new byte[1024];
            buf 
= System.Text.Encoding.Unicode.GetBytes(message);
            clicentSock 
= new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            
try
            {
                clicentSock.SendTo(buf, remoteIpep);
            }
            
catch (SocketException sexc)
            {
                listBox.Items.Add(sexc.Message);
            }
        }
        
#endregion
    }
}

本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2008/08/05/1260794.html,如需转载请自行联系原作者

相关文章
|
网络协议 算法 Java
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
194 3
|
11月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
391 0
Linux C/C++之TCP / UDP通信
|
C语言
C语言 网络编程(七)UDP通信创建流程
本文档详细介绍了使用 UDP 协议进行通信的过程,包括创建套接字、发送与接收消息等关键步骤。首先,通过 `socket()` 函数创建套接字,并设置相应的参数。接着,使用 `sendto()` 函数向指定地址发送数据。为了绑定地址,需要调用 `bind()` 函数。接收端则通过 `recvfrom()` 函数接收数据并获取发送方的地址信息。文档还提供了完整的代码示例,展示了如何实现 UDP 的发送端和服务端功能。
|
网络协议 安全 Java
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
136 1
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
|
网络协议 数据处理 C语言
网络编程进阶:UDP通信
网络编程进阶:UDP通信
|
网络协议 网络架构
【网络编程入门】TCP与UDP通信实战:从零构建服务器与客户端对话(附简易源码,新手友好!)
在了解他们之前我们首先要知道网络模型,它分为两种,一种是OSI,一种是TCP/IP,当然他们的模型图是不同的,如下
437 1
|
网络协议 Java
Java UDP通信详解
UDP(User Datagram Protocol)是一种无连接的网络传输协议,它不像TCP那样需要建立连接和维护状态,因此更加轻量级。UDP适用于那些对数据传输的实时性要求较高,可以容忍一定数据丢失的场景。本文将详细介绍Java中如何使用UDP协议进行网络通信,包括UDP套接字、数据传输、服务器和客户端的创建等。
287 0
|
网络协议 Java 数据处理
(一)Java网络编程之计网基础、TCP-IP协议簇、TCP、UDP协议及腾讯QQ通信原理综述
就目前而言,多数网络编程的系列的文章都在围绕着计算机网络体系进行阐述,但其中太多理论概念,对于大部分开发者而言,用途甚微。因此,在本系列中则会以实际开发者的工作为核心,从Java程序员的角度出发,详细解读Java的网络编程核心内容。
270 0
UDP通信
UDP通信
97 1
基于QT实现的QQ聊天简易版(UDP通信版)
源码已经给小伙伴们整理好了,微信搜索 嵌入式工程之家 关注公众号回复 QQ 即可获得源码和详细操作指示哦~
275 0