需求是这样的,客户那边有一个server,服务端口为17778,现在我需要通过17776向服务器的17778端口发送数据,请问在C#中如何实现,我现在实现往17778端口发送数据,但是我这边不能够指定固定到17776端口发送,谢谢!
请给出相应代码,谢谢!

解决方案 »

  1.   

    使用TcpClient 来根据端口进行连接
      

  2.   


    string MyMessage= this.textBox2.Text+":"+this.richTextBox1.Text+"\n";
    //根据目标计算机地址建立连接
    TcpClient MyTcpClient = new TcpClient(this.textBox1.Text, 888);
    //获得用于网络访问的数据流
    NetworkStream MyTcpStream =MyTcpClient.GetStream();
    StreamWriter MyStream = new StreamWriter(MyTcpStream);
    //将字符串写入流
    MyStream.Write(MyMessage);
    //将缓冲数据写入基础流
    MyStream.Flush();
    //关闭网络流
    MyStream.Close();
    MyTcpClient.Close(); 
    this.richTextBox3.AppendText(this.richTextBox1.Text+"\n");
    this.richTextBox1.Clear();
      

  3.   

    我现在使用的是socket,刚才我没有说明白,因为在实现往服务器发送数据的同时,这个程序本身也是一个服务器,它同时接收从另一个socket发送过来的数据,然后将发送过来的数据进行一些处理,然后在发送到刚才提到过的服务端去,因为初次设计到socket编程,很多不明白,还请尽量详细点,谢谢
    to mrhan2008
    上面的代码能够实现指定发送端口么?
    谢谢
      

  4.   

    可以的  我给你发完整的代码
    看下面的 using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Threading;
    using System.Net.Sockets;
    using System.IO;
    namespace Network
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
                    //这里窗口设计区域省略
    private void StartListen()
    {
    MyTcpListener=new TcpListener(888);
    //开始监听
    MyTcpListener.Start();              
    while(true)
    {//获取TcpClient
    TcpClient MyTcpClient=MyTcpListener.AcceptTcpClient();
    NetworkStream MyStream=MyTcpClient.GetStream();
    byte[] MyBytes = new byte[1024];
    int MyBytesRead=MyStream.Read(MyBytes,0,MyBytes.Length);
    string MyMessage=System.Text.Encoding.Default.GetString(MyBytes,0,MyBytesRead);
    this.richTextBox2.Text+=MyMessage;
    }
    }
    private void button1_Click(object sender, System.EventArgs e)
    {//发送聊天内容
    if(this.textBox1.Text.Length<1||this.textBox2.Text.Length<1||this.richTextBox1.Text.Length<1)
    return;
    try
    {
    string MyMessage= this.textBox2.Text+":"+this.richTextBox1.Text+"\n";
    //根据目标计算机地址建立连接
    TcpClient MyTcpClient = new TcpClient(this.textBox1.Text, 888);
    //获得用于网络访问的数据流
    NetworkStream MyTcpStream =MyTcpClient.GetStream();
    StreamWriter MyStream = new StreamWriter(MyTcpStream);
    //将字符串写入流
    MyStream.Write(MyMessage);
    //将缓冲数据写入基础流
    MyStream.Flush();
    //关闭网络流
    MyStream.Close();
    MyTcpClient.Close(); 
    this.richTextBox3.AppendText(this.richTextBox1.Text+"\n");
    this.richTextBox1.Clear();
    }
    catch(Exception Err)
    {
       MessageBox.Show(Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
    }
    private void Form1_Load(object sender, System.EventArgs e)
    {//开始监听
    //创建监听线程
    this.MyListenThread= new Thread(new ThreadStart(StartListen));
    //启动线程
    this.MyListenThread.Start();
    } private void Form1_Closed(object sender, System.EventArgs e)
    {//关闭SOCKET
    try
    {
    if (this.MyTcpListener!=null)
    {//关闭监听器
    this.MyTcpListener.Stop();
    }
    if (this.MyListenThread!=null)
    { //如果线程还处于运行状态就关闭它
    if (this.MyListenThread.ThreadState==ThreadState.Running)
    {
    this.MyListenThread.Abort();
    }
    }
    }
    catch(Exception Err)
    {
      MessageBox.Show(Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
    }
    }
    }
      

  5.   

    请问用socket能够实现这样的功能么?