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
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
相关文章推荐
- c# WINFORM SOCKET编程-简单聊天程序(服务端)(转载)
- c# WINFORM SOCKET编程-简单聊天程序(服务端)
- c#基于socket编程实现简单多人聊天程序
- C# SOCKET编写的简单聊天通信程序(客户端+服务端)
- 简单的Socket聊天程序(客户端)
- 仿QQ聊天程序SOCKET编程服务端与客户端,成功通信
- [C#] Socket 通讯,一个简单的聊天窗口小程序
- Socket通讯编程实现简单的任意聊天程序
- Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程
- C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)
- C# Socket编程 一个简单的Socket 客户端服务器通信架构
- [JavaWeb基础] 024.Socket编程之简单的聊天程序
- C# Socket聊天程序(一个服务端,多个客户端)
- 01 TCP Socket 编程_一个简单的服务端程序和客户端程序实现
- C# Socket聊天程序(一个服务端,多个客户端)
- C#版 Winform界面 Socket编程 Client客户端
- c#网络编程学习笔记02_Tcp编程(中)_简单的同步tcp聊天程序
- Socket编程服务端和客户端互相通信,实现简单的聊天
- 基于C#Winform的简易聊天程序客户端(3)
- Linux socket编程-最简单的服务器和客户端程序