请问有关于Socket应用程序的例子吗?很急喔
解决方案 »
- 这个表单的按钮,如何用webbrowser来点击啊(没有名字)
- 请教下面判断语句的一些疑问?
- 求问:哪里能下载到Installshield Express Custom Edition For Delphi
- 一行代码解决问题!(up有分,前50个回答问题的人有分)
- 如何用Delphi工具---Image Editor 将已存在的位图文件编辑成资源文件?
- 刚刚"玩"DELPHI,有一个小小的问题,自己不想查资料了,谢谢!!
- 关于声音的问题!!!
- Delphi中安全数组(safearray)如何用?给出例子,马上给分!
- 我是菜鸟牛虻,我又碰到问题了,我用query查询paradox,但除了主键可以查询外,别的都提示:invalid field name 字段名 ,怎么回事呀?
- 求DELPHI5大全电子版
- 在局域网内,如何动态获得本局域网对外(INTERNET网)的未分配的端口号,
- 关于多页面的界面设计的问题?
Stream : TWinSocketStream;
Buffer : array[0 .. 9] of Char;
begin
{ make sure connection is active }
while (not Terminated) and ClientSocket.Connected do
begin
try
Stream := TWinSocketStream.Create(ClientSocket, 60000);
try
FillChar(Buffer, 10, 0); { initialize the buffer }
{ give the client 60 seconds to start writing }
if Stream.WaitForData(60000) then begin
if Stream.Read(Buffer, 10) = 0 then { if can抰 read in 60 seconds }
ClientSocket.Close; { close the connection }
{ now process the request }
...
end
else
ClientSocket.Close; { if client doesn抰 start, close }
finally
Stream.Free;
end;
except
HandleException; end;
end;
end;
找一个VC用API函数做的socket程序看看,很多
http://www.vckbase.com/
你这土人..DELPHI自带不是有DEMO吗??你不会看看..比一般的人写的还要好..
serverprocedure TzypNeoForm.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
var
j:integer;
begin
case i of
1:begin
for j:=serversocket1.Socket.ActiveConnections-1 downto 0 do
begin
serversocket1.Socket.Connections[j].SendText('++大家请注意,有系统广播-----'+edit1.text);
end;
richedit1.ReadOnly:=false;
RichEdit1.SelAttributes.Color := clRed;
richedit1.lines.add('大家请注意,有系统广播-----'+edit1.text);
RichEdit1.SelAttributes.Color :=clWindow;
edit1.clear;
richedit1.readonly:=true;
end;
end;
end;procedure TzypNeoForm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
if not (trim(edit1.text)='') then
begin
i:=1;
serversocket1.OnClientWrite(self,serversocket1.socket);
end;
end;
end;procedure TzypNeoForm.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
cc,bb,dd,ll:string;
i,j,k,z,zz:integer;
mydata:tstringlist;
begin
bb:=socket.ReceiveText;
if copy(bb,1,8)='username' then
begin
mydata:=tstringlist.Create;
i:=ListView1.Items.Add.Index;
ListView1.Items.Item[i].Caption:=IntToStr(Socket.SocketHandle);
ListView1.Items.Item[i].SubItems.add(copy(bb,9,length(bb)));
{ button1.Click;}
{for z:=0 to listview1.Items.Count-1 do
begin
mydata.Add(listview1.Items.Item[z].SubItems.Text);
end;}
{mydata.Add('aaaaaaaa');
for zz:=0 to serversocket1.Socket.ActiveConnections-1 do
begin
serverSocket1.socket.Connections[0].sendbuf(MyData,sizeof(MyData));
end;
{for z:=serversocket1.Socket.ActiveConnections-1 downto 0 do
begin
serversocket1.Socket.Connections[z].SendText('addusername'+copy(bb,9,length(bb)));
end;}
end;if copy(bb,1,10)='isendtoall' then
begin
cc:=copy(bb,11,length(bb));
for j:=serversocket1.Socket.ActiveConnections-1 downto 0 do
begin
serversocket1.Socket.Connections[j].SendText(ListView1.FindCaption(0,IntToStr(Socket.SocketHandle),true,true,true).subitems.text+'说:'+cc);
end;
richedit1.Lines.Add(ListView1.FindCaption(0,IntToStr(Socket.SocketHandle),true,true,true).subitems.text+'说:'+cc);
SendMessage(richedit1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);
end;if copy(bb,1,13)='isendtoanyone' then
begin
k:=pos('々',bb);
dd:=copy(bb,k+2,length(bb));
k:=pos('々',dd);
ll:=dd;
copy(ll,k+2,length(ll));{ll为要发送的信息}
delete(dd,k,length(dd)); {dd是对哪个昵称发送信息}
end;end;
procedure TzypNeoForm.Button1Click(Sender: TObject);
var
mydata:tstringlist;
begin
mydata:=tstringlist.create;
mydata.add('1');
mydata.add('1');
serverSocket1.socket.Connections[0].sendbuf(MyData,sizeof(MyData));
end;
Socket: TCustomWinSocket);
var
aa,bb:string;
ilen:integer;
mydata:tstringlist;
begin
{ aa:=socket.ReceiveText;}
mydata:=tstringlist.create;
iLen := Socket.ReceiveLength;
Socket.ReceiveBuf(MyData,iLen);
memo1.lines.add(mydata.text);
{if copy(aa,1,11)='addusername' then
begin
delete(bb,1,11);
listbox1.Items.Add(bb);
aa:='';
end;if pos('++大家请注意,有系统广播-----',aa)<>0 then
begin
if not (copy(aa,32,length(aa))='') then
begin
richedit1.readonly:=false;
RichEdit1.SelAttributes.Color := clRed;
aa:=Copy(aa,5,Length(aa));
richedit1.lines.add(aa);
RichEdit1.SelAttributes.Color :=clWindow;
richedit1.ReadOnly:=true;
SendMessage(richedit1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);
end;
end
else}
begin
{richEdit1.SelAttributes.Color :=clWindow;
richedit1.lines.add(aa);
SendMessage(richedit1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);}end;
end;
procedure Tform1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
form1.StatusBar1.Panels[0].Text:='连接成功';
form1.Panel1.Enabled:=true;
form2.showmodal;
end;procedure Tform1.N2Click(Sender: TObject);
begin
form1.ClientSocket1.Active:=true;
end;procedure Tform1.Timer1Timer(Sender: TObject);
begin
form1.StatusBar1.Panels[1].text:=datetimetostr(now);
end;procedure Tform1.N4Click(Sender: TObject);
begin
close;
end;procedure Tform1.N3Click(Sender: TObject);
begin
form1.ClientSocket1.Active:=false;
form1.Panel1.Enabled:=false;
end;procedure tform1.sendusername;
begin
clientsocket1.socket.SendText('username'+username);
end;
procedure Tform1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
if ((combobox1.Text='') and (edit1.text='')) or ((combobox1.Text='') or (edit1.text='')) then
begin
messagebox(handle,'1,请选择您要聊天的对象'#10#13+'2,请不要发送空信息!','错误!!',mb_ok);
end
else
begin
if (not checkbox1.Enabled) and (combobox1.Text='全体') then clientsocket1.Socket.SendText('isendtoall'+edit1.text);{向全体发送消息}
if (checkbox1.Enabled) and (checkbox1.checked) and (combobox1.Text<>'全体') then clientsocket1.Socket.SendText('isendtoanyone'+'々'+combobox1.text+'々'+edit1.text);
end;
end;
end;procedure Tform1.ComboBox1Click(Sender: TObject);
begin
if combobox1.text='全体' then form1.CheckBox1.enabled:=false
else form1.CheckBox1.enabled:=true;
end;