Socket打开通信通道,告诉本地机器,愿意在该通道上接受客户请求——监听,等待客户请求——接受请求,创建专用链接进行读写——处理完毕,关闭专用链接——关闭通信通道(当然其中监听到关闭专用链接可以重复循环)

Ø  客户端:打开通信通道,连接服务器——数据交互——关闭信道。

服务端server代码

  try
{
bool types = true;
while (types != false)
{ int port = ; string host = "127.0.0.1"; IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类 s.Bind(ipe);//绑定2000端口 s.Listen();//开始监听 Console.WriteLine("等待与我配对"); Socket temp = s.Accept();//为新建连接创建新的Socket。 Console.WriteLine("正在配对.."); string recvStr = ""; byte[] recvBytes = new byte[]; int bytes; bytes = temp.Receive(recvBytes, recvBytes.Length, );//从客户端接受信息 // recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
//recvStr += Encoding.UTF8.GetString(recvBytes, 0, bytes);
recvStr += Encoding.UTF8.GetString(recvBytes,,bytes); // recvStr+= Encoding.Unicode.GetChars(recvBytes);
Console.WriteLine("配对人跟我讲:{0}", recvStr);//把客户端传来的信息显示出来 string sendStr = "我回配对人说可以配对Ok!Client Send Message Sucessful!"; byte[] bs = Encoding.UTF8.GetBytes(sendStr); temp.Send(bs, bs.Length, );//返回客户端成功信息 temp.Close(); s.Close();
} } catch (ArgumentNullException e)
{ Console.WriteLine("ArgumentNullException: {0}", e);
} catch (SocketException e)
{ Console.WriteLine("SocketException: {0}", e);
} Console.WriteLine("Press Enter to Exit"); Console.ReadLine();

客户端Client代码

 try
{ int port = ; string host = "127.0.0.1"; IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndPoint实例 Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket Console.WriteLine("正在连接配对..."); c.Connect(ipe);//连接到服务器 string sendStr = "你好,我是hello!This is a socket test";
Encoding.Unicode.GetBytes(sendStr);
// byte[] bs = Encoding.ASCII.GetBytes(sendStr);
byte[] bs = Encoding.UTF8.GetBytes(sendStr); Console.WriteLine("Send Message"); c.Send(bs, bs.Length, );//发送测试信息 string recvStr = ""; byte[] recvBytes = new byte[]; int bytes; bytes = c.Receive(recvBytes, recvBytes.Length, );//从服务器端接受返回信息 recvStr += Encoding.UTF8.GetString(recvBytes, , bytes); Console.WriteLine("客户端接收到服务器说:{0}", recvStr);//显示服务器返回信息 c.Close(); Console.WriteLine("下面开始正常对话……");
bool trys = true; while (trys != false)
{
bs = null;
string pika= Console.ReadLine();
bs= Encoding.UTF8.GetBytes(pika); c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket c.Connect(ipe);//连接到服务器
c.Send(bs, bs.Length, );//发送测试信息
string recvStr1 = ""; byte[] recvBytes1 = new byte[]; int bytes1; bytes1 = c.Receive(recvBytes1, recvBytes1.Length, );//从服务器端接受返回信息 recvStr1 += Encoding.UTF8.GetString(recvBytes1, , bytes1); Console.WriteLine("客户端接收到服务器说:{0}", recvStr1);//显示服务器返回信息 c.Close();
} } catch (ArgumentNullException e)
{ Console.WriteLine("ArgumentNullException: {0}", e); } catch (SocketException e)
{ Console.WriteLine("SocketException: {0}", e); } Console.WriteLine("Press Enter to Exit"); Console.ReadLine();

其中有代码Encoding.UTF8

这一块是设置编码,使用Unicode再用中文的时候会发生乱码????类试与这一的,编码服务端跟客户端必须一致,不然也会出现乱码行为,不过咱这一般都用Encoding.UTF8就OK的啦

Socket通讯简易学习的更多相关文章

  1. c#写个基础的Socket通讯

    晚上想写点东西,想想把我刚来公司学的Sockt通讯写上来吧.要写的简单易懂点,新人们可以借鉴下哦,用控制台写. 先得说说Socket,与TCP/UDP啥关系,一直讲什么Socket通讯,TCP通讯,都 ...

  2. 试解析Tomcat运行原理(一)--- socket通讯

    关于这篇文章也确实筹划了很久,今天决定开篇写第一篇,说起tomcat首先很容易联想到IIS,因为我最开始使用的就是.net技术,我第一次使用asp写学生成绩管理系统后,很茫然如何让别人都能看到或者说使 ...

  3. c# TCP Socket通讯基础

    在做网络通讯方面的程序时,必不可少的是Socket通讯. 那么我们需要有一套既定的,简易的通讯流程. 如下: <pre name="code" class="csh ...

  4. java socket通讯(一) 入门示例

    一.入门 要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别 二.示例 首先新建了一个java工程,包括两个部分,客户端SocketClient ...

  5. 试解析Tomcat运行原理(一)--- socket通讯(转)

    关于这篇文章也确实筹划了很久,今天决定开篇写第一篇,说起tomcat首先很容易联想到IIS,因为我最开始使用的就是.net技术,我第一次使用asp写学生成绩管理系统后,很茫然如何让别人都能看到或者说使 ...

  6. 闲来无事,写个基于TCP协议的Socket通讯Demo

    .Net Socket通讯可以使用Socket类,也可以使用 TcpClient. TcpListener 和 UdpClient类.我这里使用的是Socket类,Tcp协议. 程序很简单,一个命令行 ...

  7. Android笔记:Socket通讯常见问题

    经验证的socket通讯问题 1.如果是模拟器和本机PC直接通讯,需要使用本机IP地址 而不是 10.0.2.2  如本机的静态地址为192.168.1.2 则直接使用该地址 2.接收和连接代码不能在 ...

  8. java socket通讯(二)处理多个客户端连接

    通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...

  9. Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯

    Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...

随机推荐

  1. UVa 557 Burger (概率+递推)

    题意:有 n 个牛肉堡和 n 个鸡肉堡给 2n 个客人吃,在吃之前抛硬币来决定吃什么,如果剩下的汉堡一样,就不用投了,求最后两个人吃到相同的概率. 析:由于正面考虑还要要不要投硬币,太麻烦,所以我们先 ...

  2. tensorflow weight_variable going

    # coding: utf-8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data d ...

  3. 一个例子读懂 JS 异步编程: Callback / Promise / Generator / Async

    JS异步编程实践理解 回顾JS异步编程方法的发展,主要有以下几种方式: Callback Promise Generator Async 需求 显示购物车商品列表的页面,用户可以勾选想要删除商品(单选 ...

  4. API网络接口

    1.天气 文章:http://segmentfault.com/a/1190000002607883 地址:http://api.lib360.net/open/weather.json?city=北 ...

  5. POJ1182【种类并查集】

    思路: ---来源百度 0表示它与根结点为同类, 1表示它吃根结点, 2表示它被根结点吃. 判断两个点a, b的关系,我们令p = Find(a), q = Find(b),即p, q分别为a, b子 ...

  6. Mysql 主从(转)

    转自 http://blog.csdn.net/hguisu/article/details/7325124

  7. ACM2017Tsukuba:H - Homework

    第一问求最多,不需要区分数学作业和信息作业,直接模拟就行了 第二问考虑每天只能产生1的贡献,每天拆成两个点,限制每天只能有1的贡献,剩下的源点连数学作业,信息作业连汇点,再将数学作业和信息作业连能连的 ...

  8. solr IK分词器

    1.把IK文件夹上传到服务器tmp文件夹 2.把需要的jar导入到solr项目中 # cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps ...

  9. python连接mysql时连接不到test文件夹怎么办

    最新版mysql安装后默认是没有test文件夹的,这时候需要我们自己创建一个test文件夹, 文件默认路径如下    C:\ProgramData\MySQL\MySQL Server 5.7\Dat ...

  10. nutzboot dubbo zookeeper简单使用

    提供方和消费方properties 配置基本差不多 nutz.application.name这个值不一样 提供方配置自动端口就行server.port=0 消费方一般需要对外提供web服务配置ip和 ...