Delphi-网络编程-第一个网络方面作品(UDP聊天程序)
其实这不算是一个聊天程序,因为还不能实现双方互发信息,只有一方能发信息,呵呵
我以后再改进吧。。。。

服务端代码:
| unitUnit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, StdCtrls,  ExtCtrls,IdSocketHandle;type  TCommBlock = record// 通讯结构  SenderName,              // 发信方名字  Msg : string[100];  // 消息  end;  TForm1 = class(TForm)    Memo1: TMemo;    Panel1: TPanel;    Memo2: TMemo;    GroupBox1: TGroupBox;    GroupBox2: TGroupBox;    LabeledEdit1: TLabeledEdit;    Button1: TButton;    IdUDPServer1: TIdUDPServer;    Button2: TButton;    Button3: TButton;    procedureIdUDPServer1UDPRead(Sender: TObject; AData: TStream;      ABinding: TIdSocketHandle);    procedureButton1Click(Sender: TObject);    procedureButton2Click(Sender: TObject);    procedureButton3Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedureTForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;  ABinding: TIdSocketHandle);//客户端连接上后触发的事件var  Comm : TCommBlock;begin  AData.ReadBuffer(Comm,AData.Size);  Memo1.Lines.Add(Comm.SenderName+':'+Comm.Msg);end;procedureTForm1.Button1Click(Sender: TObject);//倾听begin  IdUDPServer1.DefaultPort := StrToInt(LabeledEdit1.Text);  IdUDPServer1.Active := True;  Button1.Enabled:=True;end;procedureTForm1.Button2Click(Sender: TObject);//清空记录beginMemo1.Clear;end;procedureTForm1.Button3Click(Sender: TObject);//关闭beginClose;end;end. | 
客户端代码:
| unitUnit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdUDPBase,  IdUDPClient;type  TCommBlock = record// 通讯结构    SenderName,              // 发信方名字    Msg : string[100];  // 消息  end;  TForm1 = class(TForm)    Panel2: TPanel;    Memo2: TMemo;    GroupBox1: TGroupBox;    GroupBox2: TGroupBox;    LabeledEdit1: TLabeledEdit;    LabeledEdit2: TLabeledEdit;    Button1: TButton;    Button2: TButton;    Memo1: TMemo;    IdUDPClient1: TIdUDPClient;    LabeledEdit3: TLabeledEdit;    Button3: TButton;    Button4: TButton;    procedureButton1Click(Sender: TObject);    procedureButton2Click(Sender: TObject);    procedureButton3Click(Sender: TObject);    procedureButton4Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementationconst  RECIEVETIMEOUT = 5000; // 毫秒,连接等待{$R *.dfm}procedureTForm1.Button1Click(Sender: TObject);//连技begin  IdUDPClient1.Host:=LabeledEdit1.Text;  IdUDPClient1.Port:=StrToInt(LabeledEdit2.Text);  IdUDPClient1.ReceiveTimeout:=RECIEVETIMEOUT;end;procedureTForm1.Button2Click(Sender: TObject);//发送var  Comm:TCommBlock;begin  Comm.SenderName:=LabeledEdit3.Text;  Comm.Msg:=Memo2.Lines.Text;  Memo1.Lines.Add(Comm.SenderName+':'+ Comm.Msg);  IdUDPClient1.SendBuffer(Comm,sizeof(Comm));end;procedureTForm1.Button3Click(Sender: TObject);//关闭beginClose;end;procedureTForm1.Button4Click(Sender: TObject);//清空记录beginMemo1.Clear;end;end. | 
http://www.cnblogs.com/keyvip/archive/2010/11/16/1878713.html
Delphi-网络编程-第一个网络方面作品(UDP聊天程序)的更多相关文章
- day26_网络编程第一天
		1.网络通信三要素(掌握) IP 端口号 协议(UPD&TCP) 2.UDP协议与TCP协议各自特点(掌握) UDP 1.不需要建立连接: 2.有数据大小限制,每个 ... 
- [转帖]关于网络编程中MTU、TCP、UDP优化配置的一些总结
		关于网络编程中MTU.TCP.UDP优化配置的一些总结 https://www.cnblogs.com/maowang1991/archive/2013/04/15/3022955.html 感谢原作 ... 
- UNP(一):网络编程角度下的TCP、UDP协议
		此博文是学习UNP(UNIX Network Programming)后的读书笔记,供以后自己翻阅回想知识. TCP.UDP概述 在前面<计算机网络与TCP/IP>栏目下已经介绍过一些关于 ... 
- UNIX网络编程---传输层:TCP、UDP、SCTP(二)
		UNIX网络编程----传输层:TCP.UDP.SCTP 一.概述 本章的焦点是传输层:包括TCP.UDP.和SCTP(流控制传输协议).SCTP是一个较新的协议,最初设计用于跨因特网传输电话信令. ... 
- 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系
		[Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ... 
- 网络编程  套接字socket TCP      UDP
		网络编程与套接字 网络编程 网络编程是什么:  网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互链接组成的  编写基于网络的应用程序的过程序称之为网络编程. 网络编程最主要的工 ... 
- 用C++实现网络编程---抓取网络数据包的实现方法
		一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包.抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议.IP.UDP.TCP.甚至各 ... 
- C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。
		最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件抖动窗口功能 服务端: using System; using System.Collec ... 
- UNIX网络编程——非阻塞connect:时间获取客户程序
		#include "unp.h" int connect_nonb(int sockfd, const SA *saptr, socklen_t salen, int nsec) ... 
随机推荐
- 【codeforces 779C】Dishonest Sellers
			[题目链接]:http://codeforces.com/contest/779/problem/C [题意] 有n个商品; 打折前买和打折后买的价格不一样; 且必须有至少k个商品在打折前买; 问你买 ... 
- 【bzoj2733】永无乡(无旋treap启发式合并 + 并查集)
			传送门 题目分析 起初每个岛都是一个平衡树, 并查集的祖先都是自己.合并两岛时,pri较小的祖先会被作为合并后的祖先, 而两颗平衡树采用启发式合并.查询k值就是基本操作. code #include& ... 
- 配置cordova的android开发环境(无android studio)
			原文:配置cordova的android开发环境(无android studio) 趁元旦放假想试一下cordova,不想安装庞大的android studio,所以想最小化安装,居然花了一整天的时间 ... 
- Android菜鸟的成长笔记(20)——IntentService
			前面介绍的Service在官方文档介绍中说Service存在着如下两个问题: 1.A Service is not a separate process. The Service object its ... 
- Cordova 返回键切换后台
			这里需要用到 cordova-plugin-backbutton 这个插件 1.安装插件,命令窗口输入(当前目录是你项目所在的目录) cordova plugin add cordova-plugin ... 
- atheros wifi 动因分析
			Ar6003 驱动文档摘要 1. wmi : wireless module interface //无线模块结构 2. bmi : bootloader message interface 3. ... 
- C#7
			C#7 阅读目录 out变量 元组(Tuples) 模式匹配(Pattern matching) 本地引用和返回(Ref locals and returns) 本地函数(Local function ... 
- Modbus TCP 示例报文
			调试modbus tcp 整理百度文库文档如下 <modbus-tcp-报文举例分析> <MODBUSTCP通讯报文> Client request: 19 B2 00 00 ... 
- MFC和Qt优缺点 (MFC几乎没有优点、全面下风)
			在网上看到的,拿来和大家一起讨论下. 我曾经使用过来开发过软件,我想和大家分享我使用他们时所体会的不同之处. 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰.但是,我在这里 ... 
- IOC学习1
			学习蒋金楠的 ASP.NET Core中的依赖注入(1):控制反转(IoC) 而来,这篇文章经典异常.一定要多读.反复读. 这篇文章举了一个例子,就是所谓的mvc框架,一开始介绍mvc的思想,由一个d ... 
