详细内容
客户端、服务器端对话的例子
发布日期:2010-06-24     点击:1962     字体:[ ]

一个C/S模式客户端和服务器端对话的例子:

服务器端代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.Sockets;
using System.IO;

namespace chat
{
    public partial class Server : Form
    {

        delegate void SetTextCallback(string text);
        private System.Windows.Forms.TextBox inputTextBox;
        private System.Windows.Forms.TextBox displayTextBox;
        private Socket connection;
        private Thread readThread;

        private System.ComponentModel.Container components = null;
        private NetworkStream socketStream;
        private BinaryWriter writer;
        private BinaryReader reader;
        private string str = "";

        public Server()
        {
            InitializeComponent();

            readThread = new Thread(new ThreadStart(RunServer));
            readThread.Start();

           
        }

        [STAThread]
        static void Main()
        { Application.Run(new Server()); }

        private void Server_Load(object sender, EventArgs e)
        {
            this.backgroundWorker1.RunWorkerAsync();
        }

        protected void Server_Closing(object sender,CancelEventArgs e)
        {
            System.Environment.Exit(System.Environment.ExitCode);
        }

        private void inputTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            try {
                if (e.KeyCode == Keys.Enter && connection != null)
                {
                  writer.Write("服务器:" + inputTextBox.Text);
                  this.displayTextBox.Text += "\r\n服务器:" + this.inputTextBox.Text;
                  if (inputTextBox.Text == "terminate")
                      connection.Close();

                  this.inputTextBox.Text = "";

               
                }//end if
           
            }
            catch(SocketException)
            {
                displayTextBox.Text += "\n写入文件错误。";
            }
        }//end inputTextBox_KeyDown

        public void RunServer()
        {
            TcpListener listener;
            int counter = 1;

            try
            {
                listener = new TcpListener(5000);
                listener.Start();

                while (true)
                {
                    //this.displayTextBox.Text = "等待连接\r\n";
                    this.SetText("等待连接\r\n");

                    connection = listener.AcceptSocket();
                    socketStream = new NetworkStream(connection);

                    writer = new BinaryWriter(socketStream);
                    reader = new BinaryReader(socketStream);

                    //displayTextBox.Text += "连接" + counter + "接通。\r\n";

                    this.SetText("连接" + counter + "接通。\r\n");
                    this.SetText("服务器>>>连接成功。");

                    writer.Write("服务器>>>连接成功。");
                    inputTextBox.ReadOnly = false;
           

用户评论
昵称 
内容  *
验证码   
   
相关文章 更多...  
Copyright © 2010 zdbase.com All Rights Reserved. 苏ICP备15039389号 可人软件设计