1 using System;
2 using System.Net;
3 using System.Net.Sockets;
4 using System.Text;
5
6 public class SynchronousSocketClient {
7
8 public static void StartClient() {
9 // Data buffer for incoming data.
10 byte[] bytes = new byte[1024];
11
12 // Connect to a remote device.
13 try {
14 // Establish the remote endpoint for the socket.
15 // This example uses port 11000 on the local computer.
16             IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName())
17             IPAddress ipAddress = ipHostInfo.AddressList[0];
18             IPEndPoint remoteEP = new IPEndPoint(ipAddress,11000);
19
20 // Create a TCP/IP  socket.
21             Socket sender = new Socket(AddressFamily.InterNetwork, 
22                 SocketType.Stream, ProtocolType.Tcp );
23
24 // Connect the socket to the remote endpoint. Catch any errors.
25 try {
26                 sender.Connect(remoteEP);
27
28                 Console.WriteLine("Socket connected to {0}",
29                     sender.RemoteEndPoint.ToString());
30
31 // Encode the data string into a byte array.
32 byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");
33
34 // Send the data through the socket.
35 int bytesSent = sender.Send(msg);
36
37 // Receive the response from the remote device.
38 int bytesRec = sender.Receive(bytes);
39                 Console.WriteLine("Echoed test = {0}",
40                     Encoding.ASCII.GetString(bytes,0,bytesRec));
41
42 // Release the socket.
43                 sender.Shutdown(SocketShutdown.Both);
44                 sender.Close();
45
46             } catch (ArgumentNullException ane) {
47                 Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
48             } catch (SocketException se) {
49                 Console.WriteLine("SocketException : {0}",se.ToString());
50             } catch (Exception e) {
51                 Console.WriteLine("Unexpected exception : {0}", e.ToString());
52             }
53
54         } catch (Exception e) {
55             Console.WriteLine( e.ToString());
56         }
57     }
58
59 public static int Main(String[] args) {
60         StartClient();
61 return 0;
62     }
63 }

服务器端:

1 using System;
2 using System.Net;
3 using System.Net.Sockets;
4 using System.Text;
5
6 public class SynchronousSocketListener {
7
8 // Incoming data from the client.
9 public static string data = null;
10
11 public static void StartListening() {
12 // Data buffer for incoming data.
13 byte[] bytes = new Byte[1024];
14
15 // Establish the local endpoint for the socket.
16 // Dns.GetHostName returns the name of the 
17 // host running the application.
18         IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
19         IPAddress ipAddress = ipHostInfo.AddressList[0];
20         IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
21
22 // Create a TCP/IP socket.
23         Socket listener = new Socket(AddressFamily.InterNetwork,
24             SocketType.Stream, ProtocolType.Tcp );
25
26 // Bind the socket to the local endpoint and 
27 // listen for incoming connections.
28 try {
29             listener.Bind(localEndPoint);
30             listener.Listen(10);
31
32 // Start listening for connections.
33 while (true) {
34                 Console.WriteLine("Waiting for a connection");
35 // Program is suspended while waiting for an incoming connection.
36                 Socket handler = listener.Accept();
37                 data = null;
38
39 // An incoming connection needs to be processed.
40 while (true) {
41                     bytes = new byte[1024];
42 int bytesRec = handler.Receive(bytes);
43                     data += Encoding.ASCII.GetString(bytes,0,bytesRec);
44 if (data.IndexOf("<EOF>") > -1) {
45 break;
46                     }
47                 }
48
49 // Show the data on the console.
50                 Console.WriteLine( "Text received : {0}", data);
51
52 // Echo the data back to the client.
53 byte[] msg = Encoding.ASCII.GetBytes(data);
54
55                 handler.Send(msg);
56                 handler.Shutdown(SocketShutdown.Both);
57                 handler.Close();

.NET SOCKET通信编程的更多相关文章

  1. 【转】C# Socket通信编程

    https://www.cnblogs.com/dotnet261010/p/6211900.html#undefined 一:什么是SOCKET socket的英文原义是“孔”或“插座”.作为进程通 ...

  2. linux系统socket通信编程实践

    简单介绍并实现了基于UDP(TCP)的windows(UNIX下流程基本一致)下的服务端和客户端的程序,本文继续探讨关于UDP编程的一些细节. 下图是一个简单的UDP客户/服务器模型: 我在这里也实现 ...

  3. linux系统socket通信编程详解函数

    linux socket编程之TCP与UDP   TCP与UDP区别 TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之 ...

  4. linux系统UDP的socket通信编程3

    我刚开始接触linux下的socket编程,边抄边理解udp socket编程,我的疑问是server不指定IP地址,client的目标IP地址是127.0.0.1,这样就可以通信吗?在同一主机下是不 ...

  5. linux系统socket通信编程2

    一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...

  6. linux系统socket通信编程1

    Linux下的Socket编程大体上包括Tcp Socket.Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较 ...

  7. C#进行Socket通信编程之一

    关于Socket编程的相关资料(含实例)在网上多如牛毛,而我写这篇文章的初衷仅仅是为了记录自己的一些心得体会. Socket提供了这样一个接口,可以方便地使程序员通过其来发送和接收网络上的数据.在利用 ...

  8. linux系统UDP的socket通信编程2

    UDP套接字编程范例: server端代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  9. linux系统UDP的socket通信编程

    发送方: /* * File: main.c * Author: tianshuai * * Created on 2011年11月29日, 下午10:34 * * 主要实现:发送20个文本消息,然后 ...

随机推荐

  1. 【Linux/Ubuntu学习6】unbuntu 下载android源码

    在Windows下安装Cygwin,通过Cygwin也可在Windows里通过本文的下载步骤下载Android源码. 以下为在Ubuntu下下载Google Android4.4源码的步骤: 1. 安 ...

  2. 【Android 界面效果33】二级listview列表

    今天来实现以下大众点评客户端的横向listview二级列表,先看一下样式. 这种横向的listview二级列表在手机软件上还不太常见,但是使用过平板的都应该知道,在平板上市比较常见的.可能是因为平板屏 ...

  3. oracle PL/SQL(procedure language/SQL)程序设计--控制结构(if else )

    IF逻辑结构:IF-THEN-END IFIF-THEN-ELSE-END IFIF-THEN-ELSIF-END IF 语法 IF condition THEN  statements;[ELSIF ...

  4. B-tree解释

    1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树:⑵若根结点不是叶子结点,则至少 ...

  5. ReactNative学习-ListView

    ListView相对于View的优点就在于可以不用一下子就把数据加载完,而是滑动着加载着数据,可以缓解数据加载,避免软件卡死. 官方文档:https://facebook.github.io/reac ...

  6. C# struct

    很困惑,为什么C#会有struct 这样一个关键字.虽然我用C#几年了,但绝少用到此关键字.我在相关书籍上学习C#的时候,看到过struct内容——但C#并不是我的第一入门语言,所以没有那么细致的学习 ...

  7. hdu-5700 区间交(二分+树状数组)

    题目链接: 区间交 Problem Description   小A有一个含有n个非负整数的数列与mm个区间.每个区间可以表示为l​i​​,r​i​​. 它想选择其中k个区间, 使得这些区间的交的那些 ...

  8. IO输入输出 3

    编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc. package com.hanqi.test; impo ...

  9. HTML5游戏开发,剪刀石头布小游戏案例

    剪刀石头布,非常可爱的小游戏,相信大家都非常的怀念这款小游戏,小时候也玩过很多次,陪伴着我的童年的成长,现在是不是还会玩一下,剪刀石头布游戏的规则我们都知道是:剪刀剪布,石头砸剪刀,布包石头.跟朋友. ...

  10. 9种CSS3炫酷图片展开预览展示动画特效

    详细内容请点击 在线预览立即下载 这是一组共9款CSS3炫酷图片预览展示动画特效插件.css的新特性可以让我们制作出各种炫酷的动画效果.该图片预览展示动画特效就是一个很好的例子,该效果开始时图片堆叠在 ...