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

服务端代码:
unit Unit1;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; procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);//客户端连接上后触发的事件var Comm : TCommBlock;begin AData.ReadBuffer(Comm,AData.Size); Memo1.Lines.Add(Comm.SenderName+':'+Comm.Msg);end;procedure TForm1.Button1Click(Sender: TObject);//倾听begin IdUDPServer1.DefaultPort := StrToInt(LabeledEdit1.Text); IdUDPServer1.Active := True; Button1.Enabled:=True;end;procedure TForm1.Button2Click(Sender: TObject);//清空记录beginMemo1.Clear;end;procedure TForm1.Button3Click(Sender: TObject);//关闭beginClose;end;end. |
客户端代码:
unit Unit1;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; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementationconst RECIEVETIMEOUT = 5000; // 毫秒,连接等待{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//连技begin IdUDPClient1.Host:=LabeledEdit1.Text; IdUDPClient1.Port:=StrToInt(LabeledEdit2.Text); IdUDPClient1.ReceiveTimeout:=RECIEVETIMEOUT;end;procedure TForm1.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;procedure TForm1.Button3Click(Sender: TObject);//关闭beginClose;end;procedure TForm1.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) ...
随机推荐
- 【BZOJ 1016】 [JSOI2008]最小生成树计数(matrix-tree定理做法)
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1016 [题意] [题解] /* 接上一篇文章; 这里用matrix-tree定理搞最小 ...
- 【records】10.24..10.30
做的题越来越少了; 我是不是该学下网络流.
- mac在终端打开应用程序
今天研究了下mac终端的启动流程.以下以sublime为例,介绍怎么在mac的终端中加入app启动方法. 方法1 :使用"open -a /Applications/Sublime\ Tex ...
- C# await 高级用法
原文:C# await 高级用法 本文告诉大家 await 的高级用法,包括底层原理. 昨天看到太子写了一段代码,我开始觉得他修改了编译器,要不然下面的代码怎么可以编译通过 await "林 ...
- PHP中的加密方式有如下几种
1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str -- 原始字符串. raw_output -- ...
- [Scikit-Learn] - 数据预处理 - 缺失值(Missing Value)处理
reference : http://www.cnblogs.com/chaosimple/p/4153158.html 关于缺失值(missing value)的处理 在sklearn的prepro ...
- Next Instruction Access Intent Instruction
Executing a Next Instruction Access Intent instruction by a computer. The processor obtains an acces ...
- WPF Bind 绑定
原文:WPF Bind 绑定 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/74332515 用过W ...
- 将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj
原文 将 WPF.UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj 写过 .NET Standard 类库或者 .NET Core 程序的 ...
- SpringMVC+easyUI 分页,查询 (完整的CRUD)
最终完毕CRUD的功能了,注意,这里会对前面有一些修改,UserController的listUser() 已经改写了,如今把所有整理一下吧. JSP: <%@ page language=&q ...