您的位置:首页 > 编程语言 > C#

c# WINFORM SOCKET编程-简单聊天程序(客户端)

2010-06-04 19:47 781 查看
这个是客户端,代码没有注释,有不明白的地方我们交流交流。


using System;


using System.Collections.Generic;


using System.ComponentModel;


using System.Data;


using System.Drawing;


using System.Linq;


using System.Text;


using System.Windows.Forms;


using System.Net;


using System.Net.Sockets;


using System.Threading;


namespace TCPClient


{


public partial class Form1 : Form


{


public Socket newclient;


public bool Connected;


public Thread myThread;


public delegate void MyInvoke(string str);


public Form1()


{


InitializeComponent();




}


public void Connect()


{


byte[] data = new byte[1024];


newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


string ipadd = serverIP.Text.Trim();


int port = Convert.ToInt32(serverPort.Text.Trim());


IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port);


try


{


newclient.Connect(ie);


connect.Enabled = false;


Connected = true;




}


catch(SocketException e)


{


MessageBox.Show("连接服务器失败 "+e.Message);


return;


}


ThreadStart myThreaddelegate = new ThreadStart(ReceiveMsg);


myThread = new Thread(myThreaddelegate);


myThread.Start();




}


public void ReceiveMsg()


{


while (true)


{


byte[] data = new byte[1024];


int recv = newclient.Receive(data);


string stringdata = Encoding.UTF8.GetString(data, 0, recv);


showMsg(stringdata + "\r\n");


//receiveMsg.AppendText(stringdata + "\r\n");


}


}


public void showMsg(string msg)


{


{


//在线程里以安全方式调用控件


if (receiveMsg.InvokeRequired)


{


MyInvoke _myinvoke = new MyInvoke(showMsg);


receiveMsg.Invoke(_myinvoke, new object[] { msg });


}


else


{


receiveMsg.AppendText(msg);


}


}


}






private void SendMsg_Click(object sender, EventArgs e)


{


int m_length = mymessage.Text.Length;


byte[] data=new byte[m_length];


data = Encoding.UTF8.GetBytes(mymessage.Text);


int i = newclient.Send(data);


showMsg("我说:" + mymessage.Text + "\r\n");


//receiveMsg.AppendText("我说:"+mymessage.Text + "\r\n");


mymessage.Text = "";


//newclient.Shutdown(SocketShutdown.Both);


}




private void connect_Click(object sender, EventArgs e)


{


Connect();


}




}


}本文出自 “运维开发” 博客,请务必保留此出处http://zhupengyue.blog.51cto.com/227198/326892
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: