socket通信マルチスレッド呼び出しフォーム(依頼)のいくつかの知識点を調べに備えて記録する
5554 ワード
1.socket通信による漢字の伝送方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte)送信受信はこのように変換される
ちょくせつプログラム
上のコードはただ参考に供して、どれだけ不足することを承知して、どうぞよろしくお愿いします
ちょくせつプログラム
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//
public delegate void ShowMessageHandel(string msg);
//
public void showMsg(string msg)
{
listBox1.Items.Add(msg);
}
private void Form1_Load(object sender, EventArgs e)
{
//Control.CheckForIllegalCrossThreadCalls = false;
Thread th = new Thread(new ThreadStart(ServerSocket));
th.Start();
// ServerSocket();
}
Socket client;
public void ServerSocket()
{
IPEndPoint ipP = new IPEndPoint(IPAddress.Parse("192.168.1.104"), 6000);
Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socketServer.Bind(ipP);
while (true)
{
socketServer.Listen(5);
client = socketServer.Accept();
Thread thClient = new Thread(new ThreadStart(ClientSocket));
thClient.Start();
}
}
public void ClientSocket()
{
ShowMessageHandel smh = showMsg;
byte[] byteMsg = new byte[1024];
while (true)
{
client.Receive(byteMsg, byteMsg.Length, SocketFlags.None);
client.Send(System.Text.ASCIIEncoding.UTF8.GetBytes(" "));
client.Send(UTF8Encoding.GetEncoding("GB2312").GetBytes(" "));
// listBox1.Items.Add(Encoding .ASCII.GetString(byteMsg));
//
string strMsg = UTF8Encoding.GetEncoding("GB2312").GetString(byteMsg);
this.BeginInvoke(smh, strMsg);//
}
}
}
上のコードはただ参考に供して、どれだけ不足することを承知して、どうぞよろしくお愿いします