C# 使用c语言的客户机-服务器连接#

C# 使用c语言的客户机-服务器连接#,c#,C#,我想使用“windows窗体应用程序”在c#中实现客户机-服务器功能 但我面临的问题是在一台机器上连接客户机和服务器。 我使用visual studio 2013,制作了两个文件,一个用于客户端,另一个用于服务器 "This is client file" using System; using System.Collections.Generic; using System.ComponentModel;

我想使用“windows窗体应用程序”在c#中实现客户机-服务器功能 但我面临的问题是在一台机器上连接客户机和服务器。 我使用visual studio 2013,制作了两个文件,一个用于客户端,另一个用于服务器

"This is client file"

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


            namespace Network_Distribution
            {
                public partial class Form1 : Form
                {
                    public Form1()
                    {
                        InitializeComponent();
                    }

                    private void btnBrowse_Click(object sender, EventArgs e)
                    {
                        openFileDialog.ShowDialog();
                        tbFilename.Text = openFileDialog.FileName;
                    }

                    private void btnSend_Click(object sender, EventArgs e)
                    {
                        Stream fileStream = File.OpenRead(tbFilename.Text); 
                        // Alocate memory space for the file 
                        byte[] fileBuffer = new byte[fileStream.Length]; 
                        fileStream.Read(fileBuffer, 0, (int)fileStream.Length);
                        // Open a TCP/IP Connection and send the data 
                        TcpClient clientSocket = new TcpClient(tbServer.Text,8080); 
                        NetworkStream networkStream = clientSocket.GetStream(); 
                        networkStream.Write(fileBuffer,0,fileBuffer.GetLength(0)); 
                        networkStream.Close();

                    }
                }
            }

"This is server file"

        using System;`enter code here`
        using System.Collections.Generic;
        using System.ComponentModel;
        using System.Data;
        using System.Drawing;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        using System.Windows.Forms;
        using System.Threading;
        using System.Net; 
        using System.Net.Sockets;
        using System.Text; 
        using System.IO;
        using System.Collections;

        namespace Network_Distribution_Client
        {
            //public partial class Form1 : Form
            //{
            //    public Form1()
            //    {
            //        InitializeComponent();
            //    }
            //}
            public partial class Form1: System.Windows.Forms.Form
            {
                private ArrayList nSockets;
                public Form1()
                {
                    InitializeComponent();
                }
                private void Form1_Load(object sender, System.EventArgs e)
                { 
                    IPHostEntry IPHost = Dns.GetHostByName(Dns.GetHostName());
                    lblStatus.Text = "My IP address is " + IPHost.AddressList[0].ToString();
                    nSockets = new ArrayList(); 
                    Thread thdListener = new Thread(new ThreadStart(listenerThread)); 
                    thdListener.Start();
                }
               //New ThreadStart(AddressOf handlerThread(Parameter))
                public void listenerThread() 
                { 
                    TcpListener tcpListener = new TcpListener(8000); 
                    tcpListener.Start();
                    while(true)
                    {
                        Socket handlerSocket = tcpListener.AcceptSocket();
                        if (handlerSocket.Connected) 
                        { 
                            lbConnections.Items.Add( handlerSocket.RemoteEndPoint.ToString() + " connected." ); 
                            lock (this) 
                            { 
                                nSockets.Add(handlerSocket);
                            } 
                            ThreadStart thdstHandler = new ThreadStart(handlerThread); 
                            Thread thdHandler = new Thread(thdstHandler); 
                            thdHandler.Start();
                        } 
                    } 
                }
                public void handlerThread()
                {
                    Socket handlerSocket = (Socket)nSockets[nSockets.Count-1]; 
                    NetworkStream networkStream = new NetworkStream(handlerSocket);
                    int thisRead=0; 
                    int blockSize=1024; 
                    Byte[] dataByte = new Byte[blockSize];
                    lock(this) 
                    { 
                        // Only one process can access // the same file at any given time 
                        Stream fileStream = File.OpenWrite("c:\\my documents\\SubmittedFile.txt");
                        while(true) 
                        {
                            thisRead=networkStream.Read(dataByte,0,blockSize);
                            fileStream.Write(dataByte,0,thisRead); 
                            if (thisRead==0) break;
                        } 
                        fileStream.Close();
                    } 
                    lbConnections.Items.Add("File Written");
                    handlerSocket = null;
                }
            }
        }

您需要说明问题的症状是什么…您应该查看
WCF
@DarkBee name droping有点奇怪。。。为什么不命名ServiceStack,SignalR,…?因为WCF集成到.NET framework中,并且易于全双工部署。您必须声明异常消息。我在代码中注意到的一个问题是服务器正在侦听
TcpListener(8000)
,但客户端试图连接到8080端口。如果这是您的输入错误,请忽略。