c#(Socket)同步套接字代码示例

时间:2023-12-16 04:03:13 

同步客户端套接字示例  

下面的示例程序创建一个连接到服务器的客户端。该客户端是用同步套接字生成的,因此挂起客户端应用程序的执行,直到服务器返回响应为止。该应用程序将字符串发送到服务器,然后在控制台显示该服务器返回的字符串。

C#
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class SynchronousSocketClient {
public static void StartClient() {
// Data buffer for incoming data.
byte[] bytes = new byte[1024];
// Connect to a remote device.
try {
// Establish the remote endpoint for the socket.
// This example uses port 11000 on the local computer.
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName())
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress,11000);
// Create a TCP/IP  socket.
Socket sender = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
// Connect the socket to the remote endpoint. Catch any errors.
try {
sender.Connect(remoteEP);
Console.WriteLine("Socket connected to {0}",
sender.RemoteEndPoint.ToString());
// Encode the data string into a byte array.
byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");
// Send the data through the socket.
int bytesSent = sender.Send(msg);
// Receive the response from the remote device.
int bytesRec = sender.Receive(bytes);
Console.WriteLine("Echoed test = {0}",
Encoding.ASCII.GetString(bytes,0,bytesRec));
// Release the socket.
sender.Shutdown(SocketShutdown.Both);
sender.Close();
} catch (ArgumentNullException ane) {
Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
} catch (SocketException se) {
Console.WriteLine("SocketException : {0}",se.ToString());
} catch (Exception e) {
Console.WriteLine("Unexpected exception : {0}", e.ToString());
}
} catch (Exception e) {
Console.WriteLine( e.ToString());
}
}
public static int Main(String[] args) {
StartClient();
return 0;
}
}
同步服务器套接字示例 下面的示例程序创建一个接收来自客户端的连接请求的服务器。该服务器是用同步套接字生成的,
因此在等待来自客户端的连接时挂起服务器应用程序的执行。该应用程序接收来自客户端的字符串,
在控制台显示该字符串,然后将该字符串回显到客户端。来自客户端的字符串必须包含字符串“<EOF>”,
以发出表示消息结尾的信号。

 

C#
 复制代码

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class SynchronousSocketListener {
// Incoming data from the client.
public static string data = null;
public static void StartListening() {
// Data buffer for incoming data.
byte[] bytes = new Byte[1024];
// Establish the local endpoint for the socket.
// Dns.GetHostName returns the name of the 
// host running the application.
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
// Create a TCP/IP socket.
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
// Bind the socket to the local endpoint and 
// listen for incoming connections.
try {
listener.Bind(localEndPoint);
listener.Listen(10);
// Start listening for connections.
while (true) {
Console.WriteLine("Waiting for a connection...");
// Program is suspended while waiting for an incoming connection.
Socket handler = listener.Accept();
data = null;
// An incoming connection needs to be processed.
while (true) {
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.ASCII.GetString(bytes,0,bytesRec);
if (data.IndexOf("<EOF>") > -1) {
break;
}
}
// Show the data on the console.
Console.WriteLine( "Text received : {0}", data);
// Echo the data back to the client.
byte[] msg = Encoding.ASCII.GetBytes(data);
handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
Console.WriteLine("\nPress ENTER to continue...");
Console.Read();
}
public static int Main(String[] args) {
StartListening();
return 0;
}
}

标签:c#(Socket)同步套接字代码示例
0
投稿

猜你喜欢

  • Java中的引用类型和使用场景详细

    2023-11-29 03:58:19
  • MyBatis中XML 映射文件中常见的标签说明

    2023-01-07 08:02:59
  • 解决eclipse启动tomcat时不能加载web项目的问题

    2023-11-15 14:45:01
  • java实现纸牌游戏之小猫钓鱼算法

    2021-08-11 22:57:00
  • C#通过抽象工厂模式造车

    2021-07-05 04:20:55
  • Android实现每天定时提醒功能

    2021-10-18 09:52:33
  • Android编程之防止反编译的实现方法

    2021-10-31 04:23:35
  • 浅谈c#.net中巧用ToString()将日期转成想要的格式

    2022-02-02 18:14:07
  • 关于Assert.assertEquals报错的问题及解决

    2023-11-03 04:56:10
  • SpringBoot注入自定义的配置文件的方法详解

    2021-12-24 02:28:06
  • Java Socket通信(一)之客户端程序 发送和接收数据

    2023-07-05 00:34:48
  • Java中Lambda表达式和函数式接口的使用和特性

    2023-06-20 20:05:42
  • 详解MyBatis 常用写法

    2022-07-14 19:36:14
  • Java使用Socket简单通讯详解

    2023-11-03 02:54:43
  • Java面试题及答案集锦(基础题122道,代码题19道)

    2023-11-25 12:36:17
  • Java实现读取文章中重复出现的中文字符串

    2022-04-27 04:29:05
  • Android Notification使用方法总结

    2023-07-15 02:55:27
  • C#窗体间通讯的几种常用处理方法总结

    2021-10-26 05:48:49
  • Android开发实现查询远程服务器的工具类QueryUtils完整实例

    2021-11-06 14:57:10
  • 深入解读Android的内部进程通信接口AIDL

    2022-09-09 04:02:02
  • asp之家 软件编程 m.aspxhome.com