DELPHI的安装目录下有个CHAT的例子,能解决你的问题
解决方案 »
- fastreport如何实现只打刚编辑保存的记录呢?
- 世界著名问题 2种语言 取词 返回值为何不同
- 想做个简单的脚本解释器,感觉无从下手! 来者有分
- 新手加入Delphi。散分。
- 深圳在职的Delphiers,请放下QQ 和 EMAIL,或者以后大家都有好处......
- 如何设置Excel横向打印?
- POPUPMENU动态创建的菜单怎样保存???在线等待。。。。。。。。。。
- 程序非正常退出或者机器断电,数据丢失如何解决?
- exception econverterror in module Vcl50.bpl at 0000CF08
- 各位老师,怎样知道用WinExec调用的一个进程是否已运行结束?用的急,谢谢!!!
- 又急:当客户选中dbcombobox中某一个item时,要使他的选中无效,dbcombobox的text不变,怎么办?
- BatchMove的源表和目的表字段不一样多的问题?
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
MyBuffer: array[0..10000] of byte; {设置接收缓冲区}
MyReceviceLength: integer;
S: string;
MyBmp: TBitmap;
MyJpg: TJpegimage; MyRect,MyLect : TRect;begin
MyRect := Rect(0,0,800,600);
Mylect := Rect(0,0,700,500); StatusBar1.SimpleText := '正在接收数据......';
if MySize = 0 then {MySize为服务端发送的字节数,如果为0表示为尚未开始图象接收}
begin
S := Socket.ReceiveText;
MySize := Strtoint(S); {设置需接收的字节数}
Clientsocket1.Socket.SendText('ready'); {发指令通知服务端开始发送图象}
end
else
begin {以下为图象数据接收部分}
MyReceviceLength := socket.ReceiveLength; {读出包长度}
StatusBar1.SimpleText := '正在接收数据,数据大小为:' + inttostr(MySize);
Socket.ReceiveBuf(MyBuffer, MyReceviceLength); {接收数据包并读入缓冲区内}
MyStream.Write(MyBuffer, MyReceviceLength); {将数据写入流中}
if MyStream.Size >= MySize then {如果流长度大于需接收的字节数,则接收完毕}
begin
MyStream.Position := 0;
MyBmp := tbitmap.Create;
MyJpg := tjpegimage.Create;
try
MyJpg.LoadFromStream(MyStream); {将流中的数据读至JPG图像对象中}
MyBmp.Assign(MyJpg); {将JPG转为BMP}
StatusBar1.SimpleText := '正在显示图像';
Image1.Picture.Bitmap.Assign(MyBmp); {分配给image1元件 } // IMage1.Canvas.CopyRect(MyRect,MyBmp.Canvas,Mylect); finally {以下为清除工作 }
MyBmp.free;
MyJpg.free;
Button2.Enabled := true;
{ Socket.SendText('cap');添加此句即可连续抓屏 }
// Socket.SendText('cap');
MyStream.Clear;
MySize := 0;
end;
end;
end;
end;
sockadd_in add;
add.family = AF_INET;
add.sin.port = ??
add.sin.add = 0 或者你某一个网卡的地址
bind(s,add,sizeof(add));listen(s,0,5);SOCKET t = accept(s);
char buf[1000];
recv(t,buf,1000);
if(buf[0] == '1')
send(t,"hello",strlen(hello)+1);
recv(t,buf,1000);
assert(buf[0] == '1');close(s);
close(t);Client:
SOCKET s = socket(AF_INET,SOCK_STREAM,PF_INET);
sockadd_in add;
add.family = AF_INET;
add.sin.port = 0
add.sin.add = 0 或者你某一个网卡的地址
bind(s,add,sizeof(add));connect(s,serveradd);send(s,"1",1);
char buf[1000];
recv(s,buf,1000);
if( string(buf) == string("hello"))
send(s,"1",1);close(s);