socket编程 tcp/ip

21 篇文章 0 订阅
客户端代码

    using System;  
    using System.Collections.Generic;  
    using System.Text;  
    using System.Net;  
    using System.IO;  
    using System.Net.Sockets;  
    namespace client  
    {  
        class Program  
        {  
            static void Main(string[] args)  
            {  
                try  
                {  
                    //创建客户端socket,使用tcp通信协议  
                    TcpClient TcpClient = new TcpClient();  
                    TcpClient.Connect("127.0.0.1", 8888);   //指定地址与端口号  
 
                    Console.WriteLine("Connect Complete");  
                    Console.WriteLine("Input string:");  
 
                    //Connect方法使用指定的IP地址和端口号将客户端连接到远程TCP主机  
                    //读入控制台输入的文字  
                    String str = Console.ReadLine();  
 
                    Stream stm = TcpClient.GetStream();  
 
                     //Unity3D教程手册:www.unitymanual.com
                    //定义数据流,用于发送和接收数据  
                    ASCIIEncoding AS = new ASCIIEncoding();  
 
                    //将字符串转换为byte类型  
                    byte[] b = AS.GetBytes(str);  
 
                    //Write(参数1,参数2,参数3)表示向服务端发送字符串  
                    //参数1指将此数组复制到当前流,参数2指从零开始的字节偏移量,参数3指要写入当前流的字节数(即字符串长度)  
                    stm.Write(b, 0, b.Length);  
 
 
                    Console.WriteLine("Send Complete");  
                    //Unity3D教程手册:www.unitymanual.com
 
                    //stm.Read在当前流中读入服务端发来的响应信息,其参数与Write方法参数一致,k值为读入字符串的长度  
                    byte[] bb = new byte[100];  
                    int k = stm.Read(bb, 0, 100);  
                    for (int i = 0; i < k; i++)  
                        Console.Write(Convert.ToChar(bb[i]));  
                    TcpClient.Close();  
 
 
 
                    //释放TcpClient实例,并不关闭基础连接  
                    Console.ReadLine();  
                }  
                catch (Exception e)  
                {  
                    Console.WriteLine("Error!" + e.StackTrace);  
                }  
            }  
        }  
    }  
服务端代码

    using System;  
    using System.Collections.Generic;  
    using System.Text;  
    using System.Net;  
    using System.Net.Sockets;  
    namespace server  
    {  
        class Program  
        {  
            static void Main(string[] args)  
            {  
                try  
                {  
                    //创建listener,ip-地址,port-端口  
                    IPAddress Ip = IPAddress.Parse("127.0.0.1");      
                    TcpListener TcpList = new TcpListener(Ip, 8888);  
                    TcpList.Start();  
 
 
                    Console.WriteLine("Server start!");  
                    Console.WriteLine("Ip address:" + TcpList.LocalEndpoint);  
                    //LocalEndpoint获取服务端(即本地)地址与端口等信息  
                    Console.WriteLine("Wait");  
 
                    //获取监听到的socket  
                    Socket Soc = TcpList.AcceptSocket();  
 
                    Console.WriteLine("Received Connection:" + Soc.RemoteEndPoint);  
 
 
                    //接收到的信息    //Unity3D教程手册:www.unitymanual.com
                    byte[] b = new byte[100];  
                    //Soc.Receive(b)从socket接收数据,将数据存入接收缓冲区列表中,k的值为该数据的长度  
                    int k = Soc.Receive(b);  
                    Console.WriteLine("Received data from client:");  
                    for (int i = 0; i < k; i++)  
                        //Convert.ToChar(b)将数组b转换基本数据类型为char的类型并输出  
                        Console.Write(Convert.ToChar(b[i]));  
 
                    //发送信息  
                    //ASCIIEncoding表示Unicode字符的ASCII字符编码类  
                    ASCIIEncoding AS = new ASCIIEncoding();  
 
                    //Unity3D教程手册:www.unitymanual.com
                    //Soc.Send向客户端发送数据,AS.GetBytes()获得括号中字符串的bytes值  
                    Soc.Send(AS.GetBytes("Received data!"));  
 
 
 
 
                    //关闭连接并释放所有关联的资源  
                    Soc.Close();  
 
 
 
 
                    //关闭侦听  
                    TcpList.Stop();  
 
 
 
 
                    //等待输入,起到暂停的作用  
                    Console.ReadLine();  
 
                }  
                catch(Exception e)  
                {  
                    Console.WriteLine("Error!" + e.StackTrace);  
                    //获取当前异常发生时调用堆栈上的帧的字符串  
                }  
            }  
        }  
    }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值