做一个VB做的CLIENT,做一个C#做的SERVER。
能实现在CLIENT连接到SERVER上,
然后从CLIENT发送‘HELLO’到SERVER,
再能从SERVER发送‘GOOD NIGHT’到CLIENT即可。

解决方案 »

  1.   

    quickstart中不是有这样的例子吗?
      

  2.   

    楼主说的是vb与c#写的WebService的操作互相调用吗?
      

  3.   

    然后从CLIENT发送‘HELLO’到SERVER,
    再能从SERVER发送‘GOOD NIGHT’到CLIENT即可。GOOD NIGHT需要单独发?还是只要跟着HELLO返回就可以了?
      

  4.   

    你弱智!白扔钱
    50RMB都不值的问题!
      

  5.   

    现在有上门安装WIN98开价50RMB的,楼主出500可以理解。。
      

  6.   

    用C#实现基于TCP协议的网络通讯
    原作者:痕迹
    TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序。 要进行基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分——主机名和端口,如www.yesky.com:80中,www.yesky.com就是主机名,80指主机的80端口,当然,主机名也可以用IP地址代替。当连接建立之后,就可以使用这个连接去发送和接收数据包,TCP协议的作用就是保证这些数据包能到达终点并且能按照正确的顺序组装起来。 在.net framework的类库(Class Library)中,提供了两个用于TCP网络通讯的类,分别是TcpClient和TcpListener。由其英文意义显而易见,TcpClient类是基于TCP协议的客户端类,而TcpListener是服务器端,监听(Listen)客户端传来的连接请求。TcpClient类通过TCP协议与服务器进行通讯并获取信息,它的内部封装了一个Socket类的实例,这个Socket对象被用来使用TCP协议向服务器请求和获取数据。因为与远程主机的交互是以数据流的形式出现的,所以传输的数据可以使用.net framework中流处理技术读写。在我们下边的例子中,你可以看到使用NetworkStream类操作数据流的方法。 在下面的例子中,我们将建立一个时间服务器,包括服务器端程序和客户端程序。服务器端监听客户端的连接请求,建立连接以后向客户端发送当前的系统时间。 先运行服务器端程序,下面截图显示了服务器端程序运行的状况: 
    然后运行客户端程序,客户端首先发送连接请求到服务器端,服务器端回应后发送当前时间到客户端,这是客户端程序的截图: 
    发送完成后,服务器端继续等待下一次连接: 
    通过这个例子我们可以了解TcpClient类的基本用法,要使用这个类,必须使用System.Net.Socket命名空间,本例用到的三个命名空间如下: using System; 
    using System.Net.Sockets; 
    using System.Text;//从字节数组中获取字符串时使用该命名空间中的类 首先讨论一下客户端程序,开始我们必须初始化一个TcpClient类的实例: TcpClient client = new TcpClient(hostName, portNum); 然后使用TcpClient类的GetStream()方法获取数据流,并且用它初始化一个NetworkStream类的实例: NetworkStream ns = client.GetStream(); 注意,当使用主机名和端口号初始化TcpClient类的实例时,直到跟服务器建立了连接,这个实例才算真正建立,程序才能往下执行。如果因为网络不通,服务器不存在,服务器端口未开放等等原因而不能连接,程序将抛出异常并且中断执行。 建立数据流之后,我们可以使用NetworkStream类的Read()方法从流中读取数据,使用Write()方法向流中写入数据。读取数据时,首先应该建立一个缓冲区,具体的说,就是建立一个byte型的数组用来存放从流中读取的数据。Read()方法的原型描述如下: public override int Read(in byte[] buffer,int offset,int size) buffer是缓冲数组,offset是数据(字节流)在缓冲数组中存放的开始位置,size是读取的字节数目,返回值是读取的字节数。在本例中,简单地使用该方法来读取服务器反馈的信息: byte[] bytes = new byte[1024];//建立缓冲区 
    int bytesRead = ns.Read(bytes, 0, bytes.Length);//读取字节流 然后显示到屏幕上: Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead)); 最后不要忘记关闭连接: client.Close(); 下面是本例完整的程序清单: using System; 
    using System.Net.Sockets; 
    using System.Text; namespace TcpClientExample 
    { 
    public class TcpTimeClient 
    { 
    private const int portNum = 13;//服务器端口,可以随意修改 
    private const string hostName = "127.0.0.1";//服务器地址,127.0.0.1指本机 [STAThread] 
    static void Main(string[] args) 
    { 
    try 
    { 
    Console.Write("Try to connect to "+hostName+":"+portNum.ToString()+"\r\n"); 
    TcpClient client = new TcpClient(hostName, portNum); 
    NetworkStream ns = client.GetStream(); 
    byte[] bytes = new byte[1024]; 
    int bytesRead = ns.Read(bytes, 0, bytes.Length); Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead)); client.Close(); 
    Console.ReadLine();//由于是控制台程序,故为了清楚的看到结果,可以加上这句 } 
    catch (Exception e) 
    { 
    Console.WriteLine(e.ToString()); 
    } 
    } 
    } 
    } 上面这个例子清晰地演示了客户端程序的编写要点,下面我们讨论一下如何建立服务器程序。这个例子将使用TcpListener类,在13号端口监听,一旦有客户端连接,将立即向客户端发送当前服务器的时间信息。 TcpListener的关键在于AcceptTcpClient()方法,该方法将检测端口是否有未处理的连接请求,如果有未处理的连接请求,该方法将使服务器同客户端建立连接,并且返回一个TcpClient对象,通过这个对象的GetStream方法建立同客户端通讯的数据流。事实上,TcpListener类还提供一个更为灵活的方法AcceptSocket(),当然灵活的代价是复杂,对于比较简单的程序,AcceptTcpClient()已经足够用了。此外,TcpListener类提供Start()方法开始监听,提供Stop()方法停止监听。 首先我们使用端口初始化一个TcpListener实例,并且开始在13端口监听: private const int portNum = 13; 
    TcpListener listener = new TcpListener(portNum); 
    listener.Start();//开始监听 如果有未处理的连接请求,使用AcceptTcpClient方法进行处理,并且获取数据流: TcpClient client = listener.AcceptTcpClient(); 
    NetworkStream ns = client.GetStream(); 然后,获取本机时间,并保存在字节数组中,使用NetworkStream.Write()方法写入数据流,然后客户端就可以通过Read()方法从数据流中获取这段信息: byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); 
    ns.Write(byteTime, 0, byteTime.Length); 
    ns.Close();//不要忘记关闭数据流和连接 
    client.Close(); 服务器端程序完整的程序清单如下: using System; 
    using System.Net.Sockets; 
    using System.Text; 
    namespace TimeServer 
    { 
    class TimeServer 
    { 
    private const int portNum = 13; [STAThread] 
    static void Main(string[] args) 
    { 
    bool done = false; 
    TcpListener listener = new TcpListener(portNum); 
    listener.Start(); 
    while (!done) 
    { 
    Console.Write("Waiting for connection..."); 
    TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("Connection accepted."); 
    NetworkStream ns = client.GetStream(); byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); try 
    { 
    ns.Write(byteTime, 0, byteTime.Length); 
    ns.Close(); 
    client.Close(); 
    } 
    catch (Exception e) 
    { 
    Console.WriteLine(e.ToString()); 
    } 
    } listener.Stop(); 
    } 
    } 
    } 把上面两段程序分别编译运行,OK,我们已经用C#实现了基于TCP协议的网络通讯,怎么样?很简单吧! 使用上面介绍的基本方法,我们可以很容易的编写出一些很有用的程序,如FTP,电子邮件收发,点对点即时通讯等等,你甚至可以自己编制一个QQ来! 
    这篇东西网上很多地方都有了。你只要把其中的客户端用VB重新写一下,思想一样。(现在VB,C#的语法实在太象,不难的。)然后发什么,收什么按照你自己的要求改改,搞定,500RMB省下了。
      

  7.   

    如果楼主实在是想把500RMB花掉,我帮你按照你的要求改好。:)
      

  8.   

    如果是WebService,那这个问题太简单了
    如果是什么协议什么的,我就要现学了,不过我不要钱
      

  9.   

    TCP嘛。你C#的程序和LINUX、UNIX连接都没关系,只是要符合双方的接口就可以了。上面兄弟都给出来了,我就不说了 :P
      

  10.   

    楼主真有钱啊!
    果然是有钱人不大想事情,这么简单一个Socket数据传输的问题都要花500块。留着钱多买两本书看看吧(不知道有钱人有没有时间去看书就是了)!
      

  11.   

    楼主留言:我是要求在FORM上实现,SERVER用C#开发,CLIENT不想带上庞大的运行库,所以采用VB开发。
    哪位能做的就留个Q,kikyang(紫辰),请留个,OK。我也不是很有钱,只是受人之托,自己这段时间又太忙了,没时间自己研究了。只好来这里买个技术。
    大家也不要觉得有什么特别,有劳就有得,我也是尊重知识,尊重人才而已!
      

  12.   

    LiuLangTao(浪...) :
    你弱智!白扔钱
    50RMB都不值的问题!
    -------------------------------------------------------------
    你还是学生吧,你如果认为编程这么不值钱的话,还是早点回去卖白菜吧。
      

  13.   

    只传送信息符合规范用相同的协议(TCP /UDP?等),用什么语言写的无关紧要
      

  14.   

    可是用的可能是vb.net。而不是vb.不知道搂住是否要98下的vb与c#的server通信,98下是没有.net框架的
      

  15.   

    c#的我已经给出,我本以为你要用VB.NET,看来不是,不好意思。我帮你再找找VB的。网上应该也有的。