当前位置:  编程技术>.net/c#/asp.net

学习C# Socket入门实例代码

    来源: 互联网  发布时间:2014-08-30

    本文导语:  以下代码需要引入命名空间:   using System.Net; using System.Net.Sockets; 1,Sever服务端代码   代码示例: int port = 2000;      //指定端口 (最后些在配置文件中) String host = "127.0.0.1";   //指定IP IPAddress ip = IPAddress.Parse(host);//把ip...

以下代码需要引入命名空间:
 

using System.Net;
using System.Net.Sockets;

1,Sever服务端代码
 

代码示例:

int port = 2000;      //指定端口 (最后些在配置文件中)
String host = "127.0.0.1";   //指定IP
IPAddress ip = IPAddress.Parse(host);//把ip地址字符串转换为IPAddress类型的实例
IPEndPoint ipep = new IPEndPoint(ip, port);//用指定的端口和ip初始化IPEndPoint类的新实例

int recv;//用于表示客户端发送的信息长度
byte[]data=new byte[1024];//用于缓存客户端所发送的信息,通过socket传递的信息必须为字节数组
//IPEndPoint ipep=new IPEndPoint(IPAddress.Any,9050);//本机预使用的IP和端口(本人进行测试没有通过)
Socket newsock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

newsock.Bind(ipep);//绑定
newsock.Listen(10);//监听
Console.WriteLine("waiting for a client");
Socket client=newsock.Accept();//当有可用的客户端连接尝试时执行,并返回一个新的socket,用于与客户端之间的通信
IPEndPoint clientip=(IPEndPoint)client.RemoteEndPoint;
Console.WriteLine("connect with client:"+clientip.Address+"atport:"+clientip.Port);
string welcome="welcome here!";
data=Encoding.ASCII.GetBytes(welcome);
client.Send(data,data.Length,SocketFlags.None);//发送信息
while(true)
{//用死循环来不断的从客户端获取信息
  data=new byte[1024];
  recv=client.Receive(data);
  Console.WriteLine("recv="+recv);
  if(recv==0)//当信息长度为0,说明客户端连接断开
    break;
  Console.WriteLine(Encoding.ASCII.GetString(data,0,recv));
  client.Send(data,recv,SocketFlags.None);
}
Console.WriteLine("Disconnected from"+clientip.Address);
client.Close();
newsock.Close();

2,Client端代码
 

代码示例:
byte[] data = new byte[1024];
Socket newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Console.Write("please input the server ip:");
string ipadd = Console.ReadLine();
Console.WriteLine();
Console.Write("please input the server port:");
int port = Convert.ToInt32(Console.ReadLine());
IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port);//服务器的IP和端口
try
{
    //因为客户端只是用来向特定的服务器发送信息,所以不需要绑定本机的IP和端口。不需要监听。
    newclient.Connect(ie);
}
catch (SocketException e)
{
    Console.WriteLine("unable to connect to server");
    Console.WriteLine(e.ToString());
    return;
}
int recv = newclient.Receive(data);
string stringdata = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine(stringdata);
while (true)
{
    string input = Console.ReadLine();
    if (input == "exit")
        break;
    newclient.Send(Encoding.ASCII.GetBytes(input));
    data = new byte[1024];
    recv = newclient.Receive(data);
    stringdata = Encoding.ASCII.GetString(data, 0, recv);
    Console.WriteLine(stringdata);
}
Console.WriteLine("disconnect from sercer");
newclient.Shutdown(SocketShutdown.Both);
newclient.Close();

有兴趣的朋友,可以动手练习下,看看这段C# socket的代码效果如何?多实践,才会有所提高。


    
 
 

您可能感兴趣的文章:

  • C#学习笔记之C#的虚方法
  • C#学习笔记之C#中的类
  • C#学习笔记之C#类的初始化
  • C#.NET学习笔记5 C#中的条件编译
  • C#学习笔记之C#接口的索引器
  • C#学习笔记之C#只读字段
  • C# 全局变量的学习小结
  • c# 常量与字段学习
  • C#学习笔记之抽象类和抽象函数
  • c# MD5加密的代码(简单示例,仅供学习参考)
  • C# 泛型数组学习小结
  • C#学习笔记之C#结构
  • 实例学习C#中Ref,Out的用法
  • C#学习笔记之扩展方法
  • C#学习笔记之继承
  • C#类的学习笔记之C#构造函数
  • c#进度条ProgressBar学习笔记
  • C# 泛型数组实例学习与总结
  • 实例学习C#中is与As运算符号的用法
  • c# 类型构造器学习
  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • 初学linux下的c有苦于找不到什么程序实例学习
  • python 基础学习第二弹 类属性和实例属性
  • java 正则表达式基础,实例学习资料收集大全 原创
  • java字符串切割实例学习(获取文件名)
  • SQL自连接(self join)实例学习
  • T-SQL常用游标函数实例学习
  • Cocos2d-x学习笔记之CCLayerColor层的使用实例
  • C# 泛型类与泛型函数的实例学习
  • jquery easyui表单验证实例学习
  • c#反射实例学习
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 小弟刚来,只能给100分!请教一下各位:学习UNIX,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!我最想用FREEBSD!
  • 小弟刚来,只能给100分!请教一下各位:学习UNIX下的程序设计,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!
  • 小弟刚来,只能给100分!请教一下各位:学习LINUX,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!
  • 各位高手:我想学习JAVA,听说jbuilder不错,请介绍几本入门书,多给一点见意。谢谢。
  • 学习,,,,,过程,怎么样从入门到精通哦?
  • 大家帮我推荐一下入门unix学习的好书吧
  • 谁给个cygwin的入门学习资料?
  • 学习linux内核入门:从哪一部分开始学习?
  • 本人想学习linux下编程,请问有哪些入门的好书。请高手不吝赐教!!!
  • 小弟刚来,只能给100分!请教一下各位:学习LINUX下的程序设计,用什么作为学习的“入门书”?推荐一个作为我的第一本书吧!
  • 我想学习linux的tcp/ip协议栈,请问从哪里入门
  • java 学习笔记(入门篇)_java程序helloWorld
  • 你学linux用的是什么书?请推荐一本你认为既能入门又能深入学习linux的书?跟贴有分.
  • 从问的问题看得出来,大家都是新手。大都问怎么配置,哪有入门资料等等问题,对于平时开发用到得问得很少。也体现出这里大家很少用java进行开发,大都刚开始学习。
  • java 学习笔记(入门篇)_java的安装与配置
  • 请大家给我推荐本学习linux入门级的书吧!谢谢
  • 请教:新手入门,该怎么学习linux驱动?
  • Oracle 数据库学习入门心得
  • 我想学习JAVA,谁能推荐我一本好的入门教材?
  • Oracle存储过程入门学习基本语法
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 新手提问:学习c++同时也想学习unix和linux
  • HTML 学习总结及下一步学习教程推荐
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • OpenStack相关学习资料搜集
  • 有最近开始学习Minix的吗?一起来学习吧
  • juqery的python实现:pyquery学习使用教程
  • 有最近开始学习Minix的吗?一起来学习吧 iis7站长之家
  • 想找共同学习Linux的新手,一起学习,共同成长


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3