C# 实现socket通讯程序(客户端)
要实现客户端与服务器的聊天小程序,其实在客户端就只做三件事,连接、发送、接收,下面是最简单例子的部分代码。其他编程语言实现网络编程也基本是一样的。然后写完客户端,就要写服务端的程序了,下一篇博客出门左拐,传送门:
1、先实例化socket协议,再连接服务器:
关键代码:newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
newclient.Connect(ie);
byte[] data = new byte[1024];
//实例化 socket
newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string ipadd = serverIP.Text.Trim(); //读取输入框的ip地址
int port = Convert.ToInt32(serverPort.Text.Trim()); //读取输入框的端口号
IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port); //将ip地址和端口号组成套接字
try
{
newclient.Connect(ie); //使用socket实例连接 给定的套接字(服务器程序)
connect.Enabled = false; //将连接按钮设置为不可用,防止再次连接出现错误
Connected = true; //将连接标志设置为已连接
}
catch(SocketException e)
{
MessageBox.Show("连接服务器失败 "+e.Message);
return;
}
2、向服务器发送数据:
关键代码:newclient.Send(data);
//获取字符长度
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);
3、接受服务器发来的数据(必须新开线程死循环监听):
关键代码:newclient.Receive(data);
//反复监听服务器发来的信息
while (true)
{
byte[] data = new byte[1024];
//从输入的套接字接受信息,存入data数组中,字节流
int recv = newclient.Receive(data);
//将字节转换成utf-8的编码字符
string stringdata = Encoding.UTF8.GetString(data, 0, recv);
//在富文本框显示服务端发来的信息
showMsg(stringdata + "\r\n");
//receiveMsg.AppendText(stringdata + "\r\n");
}
下面给出具体图片吧!