这个代码是我对照着CSDN上面的教程一点点写出来的,但是不知道为什么不支持中文呢?英文和数字一切正常。unit pay;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ScktComp, StdCtrls;type
TForm1 = class(TForm)
MainMenu2: TMainMenu;
N1: TMenuItem;
ListenItem: TMenuItem;
ConnectItem: TMenuItem;
Disconnect: TMenuItem;
Exit: TMenuItem;
Memo1: TMemo;
Memo2: TMemo;
ClientSocket: TClientSocket;
ServerSocket: TServerSocket;
procedure ListenItemClick(Sender: TObject);
procedure ConnectItemClick(Sender: TObject);
procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure ExitClick(Sender: TObject);
procedure DisconnectClick(Sender: TObject); private
Isserver:boolean;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ListenItemClick(nil);
end;procedure TForm1.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end;procedure TForm1.ConnectItemClick(Sender: TObject);
var
server:string;
begin
if ClientSocket.Active then ClientSocket.Active := False;
if InputQuery('计算机将连接到', '服务器地址:', Server) then
if Length(Server) > 0 then
with ClientSocket do
begin
Host := Server;
Active := True;
ListenItem.Checked := False;
end;
end;
procedure TForm1.DisconnectClick(Sender: TObject);
begin
ClientSocket.Active := False;
ServerSocket.Active := True;
end;procedure TForm1.ExitClick(Sender: TObject);
begin
ServerSocket.Close;
ClientSocket.Close;
end;procedure TForm1.ListenItemClick(Sender: TObject);
begin
ListenItem.Checked := not ListenItem.Checked;
if ListenItem.Checked then
begin
ClientSocket.Active := False;
ServerSocket.Active := True;
end
else
begin
if ServerSocket.Active then
ServerSocket.Active := False;
end;
end;procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
if IsServer then ServerSocket.Socket.Connections[0].SendText(utf8toansi(Memo1.Lines[Memo1.Lines.Count - 1]))
else
ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);
end;
procedure TForm1.ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket);
begin
IsServer := True;
end;procedure TForm1.ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Clear;
end;procedure TForm1.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(utf8toansi(Socket.ReceiveText));
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ScktComp, StdCtrls;type
TForm1 = class(TForm)
MainMenu2: TMainMenu;
N1: TMenuItem;
ListenItem: TMenuItem;
ConnectItem: TMenuItem;
Disconnect: TMenuItem;
Exit: TMenuItem;
Memo1: TMemo;
Memo2: TMemo;
ClientSocket: TClientSocket;
ServerSocket: TServerSocket;
procedure ListenItemClick(Sender: TObject);
procedure ConnectItemClick(Sender: TObject);
procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure ExitClick(Sender: TObject);
procedure DisconnectClick(Sender: TObject); private
Isserver:boolean;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ListenItemClick(nil);
end;procedure TForm1.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end;procedure TForm1.ConnectItemClick(Sender: TObject);
var
server:string;
begin
if ClientSocket.Active then ClientSocket.Active := False;
if InputQuery('计算机将连接到', '服务器地址:', Server) then
if Length(Server) > 0 then
with ClientSocket do
begin
Host := Server;
Active := True;
ListenItem.Checked := False;
end;
end;
procedure TForm1.DisconnectClick(Sender: TObject);
begin
ClientSocket.Active := False;
ServerSocket.Active := True;
end;procedure TForm1.ExitClick(Sender: TObject);
begin
ServerSocket.Close;
ClientSocket.Close;
end;procedure TForm1.ListenItemClick(Sender: TObject);
begin
ListenItem.Checked := not ListenItem.Checked;
if ListenItem.Checked then
begin
ClientSocket.Active := False;
ServerSocket.Active := True;
end
else
begin
if ServerSocket.Active then
ServerSocket.Active := False;
end;
end;procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
if IsServer then ServerSocket.Socket.Connections[0].SendText(utf8toansi(Memo1.Lines[Memo1.Lines.Count - 1]))
else
ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);
end;
procedure TForm1.ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket);
begin
IsServer := True;
end;procedure TForm1.ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Clear;
end;procedure TForm1.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(utf8toansi(Socket.ReceiveText));
end;end.
转出来的是什么呢?utf8toansi(Socket.ReceiveText));
按ansi发,收到就不用再utf8转ansi了吧?