1.Server

using System;
using System.Collections.Generic;
using System.Text;
//添加Socket类
using System.Net;
using System.Net.Sockets; namespace ScoketServer
{
class Program
{
static void Main(string[] args)
{ int port = ;
string host = "17.1.1.78"; //创建终结点
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port); //创建Socket并开始监听 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建一个Socket对象,如果用UDP协议,则要用SocketTyype.Dgram类型的套接字
s.Bind(ipe); //绑定EndPoint对象(2000端口和ip地址)
s.Listen(); //开始监听
Console.WriteLine("等待客户端连接"); //接受到Client连接,为此连接建立新的Socket,并接受消息
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, , bytes); //给Client端返回信息
Console.WriteLine("server get message:{0}", recvStr); //把客户端传来的信息显示出来
string sendStr = "ok!Client send message successful!";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
temp.Send(bs, bs.Length, ); //返回信息给客户端
temp.Close();
s.Close();
Console.ReadLine();
}
}
}

2.client

using System;
using System.Collections.Generic;
using System.Text;
//添加Socket类
using System.Net;
using System.Net.Sockets; namespace SocketClient
{
class Program
{
static void Main(string[] args)
{
try
{
int port = ;
string host = "17.1.1.78";
//创建中街店EndPoint
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port); //把ip和端口转化为IPEndPoint的实例 //创建Socket并连接到服务器
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建Socket
Console.WriteLine("Connecting...");
c.Connect(ipe); //连接到服务器 //向服务器发送信息
string endStr = "Hello,this is a socket test";
byte[] bs = Encoding.ASCII.GetBytes(endStr); //把字符串编码为字节
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.ASCII.GetString(recvBytes, , bytes);
Console.WriteLine("client get message:{0}", recvStr); //回显服务器的返回信息
Console.Read();
//一定要记着用完Socket后要关闭
c.Close();
}
catch (ArgumentException e)
{
Console.WriteLine("argumentNullException:{0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException:{0}",e);
}
}
}
}

c# Sockect 通信的更多相关文章

  1. 双十一问题:kafka消费能力低下原因思考

    抛去cpu.内存等机器原因,在每个分区皆分配一个进程消费的情况下,利用扩机器来提高kafka消费速率已无能为力 此时发现,在实际洪峰时段的消费速率元达不到先前压测时的消费速率 原因思考: 1.洪峰时段 ...

  2. 阻塞通信之Socket编程

    Socket通信,主要是基于TCP协议的通信.本文从Socket通信(代码实现).多线程并发.以及TCP协议相关原理方面 介绍 阻塞Socket通信一些知识. 本文从服务器端的视角,以“Echo Se ...

  3. java的Socket通信例子及关于java.net.SocketException: Socket is closed错误

    今天写socket数据相互通信的时候,碰到一个及其蛋疼的错误.单向传输数据的时候server与client是没有问题的,但是两个都有输入输出操作的时候就出现了这个问题 java.net.SocketE ...

  4. 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信

    接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...

  5. 笔记:Binder通信机制

    TODO: 待修正 Binder简介 Binder是android系统中实现的一种高效的IPC机制,平常接触到的各种XxxManager,以及绑定Service时都在使用它进行跨进程操作. 它的实现基 ...

  6. .NET 串口通信

    这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...

  7. MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信

    MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...

  8. 多线程的通信和同步(Java并发编程的艺术--笔记)

    1. 线程间的通信机制 线程之间通信机制有两种: 共享内存.消息传递.   2. Java并发 Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式执行,通信的过程对于程序员来说是完全透 ...

  9. 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)

    搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...

随机推荐

  1. C++对析构函数的误解

    C++析构前言 析构函数在什么时候会自动被调用,在什么时候需要手动来调用,真不好意思说偶学过C++…今日特此拨乱反正. C++析构误解正文 对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化 ...

  2. http的GET和POST

    本文主要内容 1.  GET和POST方法介绍 2.  源代码分析 3.  结果分析 4.  例子参考及引用: http://www.cnblogs.com/zhijianliutang/archiv ...

  3. AppendMenu函数添加菜单

    这个函数添加新项目到指定菜单的末尾.你可以使用appendmenu指定内容,外观,和菜单项行为. BOOL AppendMenu( HMENU hMenu, UINT uFlags, UINT uID ...

  4. 二叉查找树 _ 二叉排序树 _ 二叉搜索树_C++

    一.数据结构背景+代码变量介绍 二叉查找树,又名二叉排序树,亦名二叉搜索树 它满足以下定义: 1.任意节点的子树又是一颗二叉查找树,且左子树的每个节点均小于该节点,右子树的每个节点均大于该节点. 2. ...

  5. Android APK反编译详解(附图) (转至 http://blog.csdn.net/ithomer/article/details/6727581)

    本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubuntu 12.04 x86_x64 反编译工具包 下载 (2012-10-10更新) 一.Apk反编译得到Java源 ...

  6. ubuntu环境JDK安装(转至 http://hi.baidu.com/leo_lovato/item/31d1150d31a06d8002ce1bec)

    ubuntu安装jdk 1.首先去官网http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载最新版的jdk.我下载了 ...

  7. jvm载入过程

    类载入过程 类从被载入到虚拟机内存中開始,到卸载出内存为止,它的整个生命周期包含:载入.验证.准备.解析.初始化.使用和卸载七个阶段.它们開始的顺序例如以下图所看到的: 当中类载入的过程包含了载入.验 ...

  8. mysql压缩包的安装、配置、配成windows服务、远程连接及常规问题

    1.下载windows安装包 下载地址:mysql-5.7.18 2.配置my.ini [client] port = 3306 # 设置mysql客户端连接服务端时默认使用的端口 [mysql] d ...

  9. 内网DNS投毒技术劫持会话

    工具列表: tcpdump Ferret Hamster node closurether 拓扑环境: 攻击机:Kali 10.10.10.237 被攻击机: win7 10.10.10.232 因为 ...

  10. 换个思路理解Javascript中的this

    https://segmentfault.com/a/1190000010328752