高分求购聊天室源程序(最好是用delphi编写的!)(200分)

烦劳给我一份,thank you!
flybirdwxp@163.net
 
to beta 烦请发一份给我
 
luket

NetICQ

给我吧,快点

andyyau@wx88.net 或者 栋栋@antdown.com 都可以!
 
我这儿有个局域网聊天室(DELPHI写的),若你想要,请先给我E-MAIL。
 
各位:由于163近期不能上传,所以拖至现在...
下载地址:
http://go1.163.com/~luket/Download/MSN.zip
完整OICQ!服务器与客户端基于UDP,客户之间基于TCP。
 
MSN没有源码???
 
Sorry,分成几次上传,好麻烦!
源代码下载地址:
http://go1.163.com/~luket/Download/MSN_Source.zip
 
也传给我一份:
hwl2000@netease.com
 
请传给我一份:
jammichen@21cn.com
 
unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, Buttons, ScktComp, ExtCtrls, ComCtrls;

type
TChatForm = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
FileConnectItem: TMenuItem;
FileListenItem: TMenuItem;
StatusBar1: TStatusBar;
Bevel1: TBevel;
Panel1: TPanel;
Memo1: TMemo;
Memo2: TMemo;
N1: TMenuItem;
SpeedButton1: TSpeedButton;
Disconnect1: TMenuItem;
ServerSocket: TServerSocket;
ClientSocket: TClientSocket;
procedure FileListenItemClick(Sender: TObject);
procedure FileConnectItemClick(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure ServerSocketError(Sender: TObject; Number: Smallint;
var Description: string; Scode: Integer; const Source,
HelpFile: string; HelpContext: Integer; var CancelDisplay: Wordbool);
procedure Disconnect1Click(Sender: TObject);
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocketAccept(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
protected
IsServer: Boolean;
end;

var
ChatForm: TChatForm;
Server: String;

implementation

{$R *.DFM}

procedure TChatForm.FileListenItemClick(Sender: TObject);
begin
FileListenItem.Checked := not FileListenItem.Checked;
//反置状态
if FileListenItem.Checked then
//监听
begin
ClientSocket.Active := False;
//禁止本机方客户程序
ServerSocket.Active := True;
//激活本机方客户程序
Statusbar1.Panels[0].Text := 'Listening...';
end
else
begin
if ServerSocket.Active then
ServerSocket.Active := False;
//禁止本机方服务器程序
Statusbar1.Panels[0].Text := '';
end;
end;

procedure TChatForm.FileConnectItemClick(Sender: TObject);
begin
if ClientSocket.Active then ClientSocket.Active := False;
//如当前状态是连接,则断开
if InputQuery('Computer to connect to', 'Address Name:', Server) then
//用户输入服务器地址
if Length(Server) > 0 then
with ClientSocket do
begin
Host := Server; //指定服务器方
Active := True; //激活客户方模块
FileListenItem.Checked := False;
end;
end;

procedure TChatForm.Exit1Click(Sender: TObject);
begin
ServerSocket.Close;
//关闭服务器socket
ClientSocket.Close;
//关闭客户socket
Close;
//退出程序
end;

procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
//用户按回车键则一次发送完毕
if IsServer then
ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1])
//如果是服务器方,这由本机服务器方模块发送消息
else
ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);
//如果是客户方,则由本机客户方模块发送信息
end;

procedure TChatForm.FormCreate(Sender: TObject);
begin
// FileListenItemClick(nil);
//程序开始时处于监听状态
end;

procedure TChatForm.ServerSocketError(Sender: TObject; Number: Smallint;
var Description: string; Scode: Integer; const Source, HelpFile: string;
HelpContext: Integer; var CancelDisplay: Wordbool);
begin
ShowMessage(Description);
//显示出错信息
end;

procedure TChatForm.Disconnect1Click(Sender: TObject);
begin
ClientSocket.Active := False;
//断开与客户方的连接
ServerSocket.Active := True;
//打开服务器方模块,执行监听
Statusbar1.Panels[0].Text := 'Listening...';
end;

procedure TChatForm.ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost;
end;

procedure TChatForm.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end;

procedure TChatForm.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end;

procedure TChatForm.ServerSocketAccept(Sender: TObject;
Socket: TCustomWinSocket);
begin
IsServer := True;
//作为服务器方
Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress;
end;

procedure TChatForm.ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Clear;
end;

procedure TChatForm.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
FileListenItemClick(nil);
//客户方断开后重新开始监听
end;

procedure TChatForm.ClientSocketError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
Memo2.Lines.Add('Error connecting to : ' + Server);
//memo中显示出错信息
ErrorCode := 0;
end;

procedure TChatForm.ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Statusbar1.Panels[0].Text := 'Listening...';
end;

end.

//TserverSocket,TClientSocket
//使用socket构件,基于tcp/ip协议
//socker编程中,通讯两端不必关心实际底层软件,套接字会提供基于
//tcp/ip,xns,DECnet,IPX/SPX协议的连接
//socket编程中通过读写套接字互相收发数据,不同服务通过
//服务器套接字的不同端口给客户提供服务,使之相互不干扰,这就保证客户与服务期间不仅可以有多个连接,而且可以有多个程序同时运行
 
to 无题:
烦劳给我发一个过来(aayzhao@263.net),谢谢!
 
谢谢,celeries@21cn.com
 
go on please
 
能不能给我一份?
e to:leebonslee@263.net
 
给我一份吧!devecom@163.com
不过也可以改写delphi的例子
 
to 无题

给我一个行吗,jacksoft@netease.com
 
to 无题
麻烦给我一个行吗?谢谢
cuicuiczy@sina.com
 
好象DELPHI的DOMES下有例子(包括原代码)
你可以看看!!!!!!!!
 
Indy套件里面有个例子不错。
 
to lollman

如何用NMHTTP POST 文件到服务器?先谢啦
 
顶部