Delphi-网络编程-第一个网络方面作品(UDP聊天程序)
其实这不算是一个聊天程序,因为还不能实现双方互发信息,只有一方能发信息,呵呵
我以后再改进吧。。。。
服务端代码:
unit Unit1; interface uses 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); //清空记录 begin Memo1 . Clear; end ; procedure TForm1 . Button3Click(Sender: TObject); //关闭 begin Close; end ; end . |
客户端代码:
unit Unit1; interface uses 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; implementation const 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); //关闭 begin Close; end ; procedure TForm1 . Button4Click(Sender: TObject); //清空记录 begin Memo1 . 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) ...
随机推荐
- 初始化NSDictionary:(工作经验)两种方法有时候效果不一样
方法1: NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; [dic setObject:[Hp_KeysArray obj ...
- Visual Studio for Mac
Visual Studio for Mac 初体验 你喜爱的 IDE,现在可用于 Mac 来自:https://www.visualstudio.com/zh-hans/vs/visual-stu ...
- Zygote总结
Zygote是由init进程通过解析 init.zygote.rc 文件而创建的,zygote所对应的可执行程序 app_process,所对应的源文件是App_main.cpp,进程名为zygote ...
- Android源码分析-点击事件派发机制
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17339857 概述 一直想写篇关于Android事件派发机制的文章,却一直没 ...
- 在 Oracle 中新建 SDE 用户
--1.创建用户(SDE)和密码(SDE) CREATE USER SDE IDENTIFIED BY SDE --2.创建表空间(SDE) CREATE TABLESPACE SDE DATAFIL ...
- Struts2——(6)表单校验
一.表单校验 js,jquery是客户端校验,今天要说的是客户端校验. 禁止js,或者机器代码会破坏客户端校验,所以客户端校验相对不安全. 服务器端校验是基于java代码在服务器端进行校验,特点是相应 ...
- framework7使用问题汇总
framework7 是个非常漂亮的Html框架,最近有个微信公众号的项目使用到了这个,后期还可以封装成APP. 淘宝版和中文官网都是V1,V2只能看英文版的http://framework7.io/ ...
- visualsvn server 提交修改日志
修改日志时遇到以下错误: Repository has not been enabled to accept revision propchanges;ask the administrator to ...
- matlab 高级函数
2*randn(sz):0 均值,方差为 4(variance), standard deviation:标准差为 2: numel():returns the # of elements: nume ...
- Analysis of variance(ANOVA)
方差分析,也称为"变异数分析",用于两个及两个以上样本均值(group means)差别的显著性检验.在 ANOVA 的环境下,一个观测得到的方差视为是由不同方差的源组合而成.