首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求c# 客户端与服务器端通讯的例子,该如何处理

2012-04-28 
求c# 客户端与服务器端通讯的例子求c# 客户端与服务器端通讯的例子客户端发送一段字符串“您好啊”给服务器

求c# 客户端与服务器端通讯的例子
求c# 客户端与服务器端通讯的例子

客户端发送一段字符串“您好啊”给服务器端,服务器端返回“您也好”

有没有相关的代码资料参考?完整点的

[解决办法]
哥们,你说的也太笼统了 我们跟本就没明白意思
1.你说的客户端和服务器端没明白意思
2.soket就可以实现
3.b/s也可以


[解决办法]
呵呵 我也有点不明白 。 
这个代码你看看吧
http://download.csdn.net/source/1336987
[解决办法]
http://cid-181e9b2001d6aa91.spaces.live.com/blog/cns!181E9B2001D6AA91!395.entry
这个亲测,可以的,而且很基础
[解决办法]
以前自己写过一个Socket+多线程。

就是仿QQ即时通讯的。

Socket用法用5楼的差不多。

只不过5楼的没有用线程处理。
[解决办法]
这个我做过,TCP,socket通信就可以
[解决办法]

C# code
//客户端 1 using System;  2 using System.Collections.Generic;  3 using System.ComponentModel;  4 using System.Data;  5 using System.Drawing;  6 using System.Text;  7 using System.Windows.Forms;  8   9 using System.Net; 10 using System.Net.Sockets; 11  12 namespace Client 13 { 14     public partial class ClientMain : Form 15     { 16         public ClientMain() 17         { 18             InitializeComponent(); 19         } 20  21         private IPEndPoint ServerInfo; 22         private Socket ClientSocket; 23         private Byte[] MsgBuffer; 24         private Byte[] MsgSend; 25  26         private void ClientMain_Load(object sender, EventArgs e) 27         { 28             this.CmdSend.Enabled = false; 29             this.CmdExit.Enabled = false; 30  31             ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 32             MsgBuffer = new Byte[65535]; 33             MsgSend = new Byte[65535]; 34             CheckForIllegalCrossThreadCalls = false; 35  36             Random TRand=new Random(); 37             this.UserName.Text = "用户" + TRand.Next(10000).ToString(); 38         } 39  40         private void CmdEnter_Click(object sender, EventArgs e) 41         { 42             ServerInfo = new IPEndPoint(IPAddress.Parse(this.ServerIP.Text), Convert.ToInt32(this.ServerPort.Text)); 43  44             try 45             { 46                 ClientSocket.Connect(ServerInfo); 47  48                 ClientSocket.Send(Encoding.Unicode.GetBytes("用户: " + this.UserName.Text + " 进入系统!\n")); 49  50                 ClientSocket.BeginReceive(MsgBuffer, 0, MsgBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null); 51  52                 this.SysMsg.Text += "登录服务器成功!\n"; 53                 this.CmdSend.Enabled = true; 54                 this.CmdEnter.Enabled = false; 55                 this.CmdExit.Enabled = true; 56             } 57             catch 58             { 59                 MessageBox.Show("登录服务器失败,请确认服务器是否正常工作!"); 60             } 61         } 62  63         private void ReceiveCallBack(IAsyncResult AR) 64         { 65             try 66             { 67                 int REnd = ClientSocket.EndReceive(AR); 68                 this.RecieveMsg.AppendText(Encoding.Unicode.GetString(MsgBuffer, 0, REnd)); 69                 ClientSocket.BeginReceive(MsgBuffer, 0, MsgBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null); 70  71             } 72             catch 73             { 74                 MessageBox.Show("已经与服务器断开连接!"); 75                 this.Close(); 76             } 77  78         } 79  80         private void CmdSend_Click(object sender, EventArgs e) 81         { 82             MsgSend = Encoding.Unicode.GetBytes(this.UserName.Text + "说:\n" + this.SendMsg.Text + "\n"); 83             if (ClientSocket.Connected) 84             { 85                 ClientSocket.Send(MsgSend); 86                 this.SendMsg.Text = ""; 87             } 88             else 89             { 90                 MessageBox.Show("当前与服务器断开连接,无法发送信息!"); 91             } 92         } 93  94         private void CmdExit_Click(object sender, EventArgs e) 95         { 96             if (ClientSocket.Connected) 97             { 98                 ClientSocket.Send(Encoding.Unicode.GetBytes(this.UserName.Text + "离开了房间!\n")); 99                 ClientSocket.Shutdown(SocketShutdown.Both);100                 ClientSocket.Disconnect(false);101             }102             ClientSocket.Close();103 104             this.CmdSend.Enabled = false;105             this.CmdEnter.Enabled = true;106             this.CmdExit.Enabled = false;107         }108 109         private void RecieveMsg_TextChanged(object sender, EventArgs e)110         {111             this.RecieveMsg.ScrollToCaret();112         }113 114         private void SendMsg_KeyDown(object sender, KeyEventArgs e)115         {116             if (e.Control && e.KeyValue == 13)117             {118                 e.Handled = true;119                 this.CmdSend_Click(this, null);120             }121         }122 123 124 125 126     }127 }//服务端  1 using System;  2 using System.Collections.Generic;  3 using System.ComponentModel;  4 using System.Data;  5 using System.Drawing;  6 using System.Text;  7 using System.Windows.Forms;  8   9 using System.Net; 10 using System.Net.Sockets; 11 using System.Threading; 12 using System.Xml; 13  14 namespace Server 15 { 16     public partial class ServerMain : Form 17     { 18         public ServerMain() 19         { 20             InitializeComponent(); 21         } 22  23         private void ServerMain_Load(object sender, EventArgs e) 24         { 25             this.CmdStar.Enabled = true; 26             this.CmdStop.Enabled = false; 27         } 28  29         private void 配置参数ToolStripMenuItem_Click(object sender, EventArgs e) 30         { 31             Set TSet = new Set(); 32             TSet.ShowDialog(); 33         } 34  35         private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) 36         { 37             About TAbout = new About(); 38             TAbout.Show(); 39         } 40         /// <summary> 41         /// 获得XML文件中的端口号 42         /// </summary> 43         /// <returns></returns> 44         private int GetPort() 45         { 46             try 47             { 48                 XmlDocument TDoc = new XmlDocument(); 49                 TDoc.Load("Settings.xml"); 50                 string TPort = TDoc.GetElementsByTagName("ServerPort")[0].InnerXml; 51                 return Convert.ToInt32(TPort); 52  53             } 54             catch { return 6600; }//默认是6600 55         } 56  57         //声明将要用到的类 58         private IPEndPoint ServerInfo;//存放服务器的IP和端口信息 59         private Socket ServerSocket;//服务端运行的SOCKET 60         private Thread ServerThread;//服务端运行的线程 61         private Socket[] ClientSocket;//为客户端建立的SOCKET连接 62         private int ClientNumb;//存放客户端数量 63         private byte[] MsgBuffer;//存放消息数据 64  65         private void CmdStar_Click(object sender, EventArgs e) 66         { 67             ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 68             ServerInfo=new IPEndPoint(IPAddress.Any,this.GetPort()); 69             ServerSocket.Bind(ServerInfo);//将SOCKET接口和IP端口绑定 70             ServerSocket.Listen(10);//开始监听,并且挂起数为10 71  72             ClientSocket = new Socket[65535];//为客户端提供连接个数 73             MsgBuffer = new byte[65535];//消息数据大小 74             ClientNumb = 0;//数量从0开始统计 75  76             ServerThread = new Thread(RecieveAccept);//将接受客户端连接的方法委托给线程 77             ServerThread.Start();//线程开始运行 78  79             CheckForIllegalCrossThreadCalls = false;//不捕获对错误线程的调用 80  81             this.CmdStar.Enabled = false; 82             this.CmdStop.Enabled = true; 83             this.StateMsg.Text = "服务正在运行"+"  运行端口:"+this.GetPort().ToString(); 84             this.ClientList.Items.Add("服务于 " + DateTime.Now.ToString() + " 开始运行."); 85         } 86          87         //接受客户端连接的方法 88         private void RecieveAccept() 89         { 90             while (true) 91             { 92                 ClientSocket[ClientNumb] = ServerSocket.Accept(); 93                 ClientSocket[ClientNumb].BeginReceive(MsgBuffer, 0, MsgBuffer.Length, 0, new AsyncCallback(RecieveCallBack),ClientSocket[ClientNumb]); 94                 this.ClientList.Items.Add(ClientSocket[ClientNumb].RemoteEndPoint.ToString()+" 成功连接服务器."); 95                 ClientNumb++; 96             } 97         } 98  99         //回发数据给客户端100         private void RecieveCallBack(IAsyncResult AR)101         {102             try103             {104                 Socket RSocket = (Socket)AR.AsyncState;105                 int REnd = RSocket.EndReceive(AR);106                 for (int i = 0; i < ClientNumb; i++)107                 {108                     if (ClientSocket[i].Connected)109                     {110                         ClientSocket[i].Send(MsgBuffer, 0, REnd,0);111                     }112                     RSocket.BeginReceive(MsgBuffer, 0, MsgBuffer.Length, 0, new AsyncCallback(RecieveCallBack), RSocket);113 114                 }115             }116             catch { }117 118         }119 120         private void CmdStop_Click(object sender, EventArgs e)121         {122             ServerThread.Abort();//线程终止123             ServerSocket.Close();//关闭SOCKET124 125             this.CmdStar.Enabled = true;126             this.CmdStop.Enabled = false;127             this.StateMsg.Text = "等待运行";128             this.ClientList.Items.Add("服务于 " + DateTime.Now.ToString() + " 停止运行.");129         }130 131 132 133     }134 }
[解决办法]
这里很多,很多。。。
http://topic.csdn.net/u/20080623/08/4bbd2475-45f1-42e3-a613-16b094759ade.html
[解决办法]
服务器
C# code
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.IO;using System.Net.Sockets;using System.Threading;using System.Net;namespace socket{    public partial class Form1 : Form    {        private Socket s;        private Thread th;        private Thread thread;        public Socket cSocket;        public NetworkStream ns;        public StreamWriter sw;        public StreamReader sr;        private delegate void SetTextCallback();        public Form1()        {            InitializeComponent();            CheckForIllegalCrossThreadCalls = false;                    }        public void Communication()        {            while (true)            {                cSocket = s.Accept();                try                {                    if (cSocket.Connected)                    {                        ns = new NetworkStream(cSocket);                        sr = new StreamReader(ns);                        sw = new StreamWriter(ns);                        string str = sr.ReadLine();                        sw.WriteLine(str);                        sw.Flush();                    }                    else                    {                        MessageBox.Show("连接失败!");                        break;                    }                }                catch (SocketException se)                {                    MessageBox.Show(se.Message);                }                catch (Exception ex)                {                    MessageBox.Show(ex.Message);                }            }        }        private void button1_Click(object sender, EventArgs e)        {            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            IPAddress serverIP = IPAddress.Parse(IP地址);            IPEndPoint server = new IPEndPoint(serverIP, 13);            s.Bind(server);            s.Listen(10);                  try            {                th = new Thread(new ThreadStart(Communication));                th.Start();            }            catch(Exception ex)            {                MessageBox.Show(ex.Message);            }        }    }} 

热点排行