/***********************************************************************
* 服务端:
* (1)用指定的端口和IP建立EndPoint对象
* (2)建立一个Socket对象
* (3)用Socket对象的Bind()方法绑定IPEndPoint
* (4)用Socket对象的Listen()方法开始监听
* (5)接收到客户端的连接,用Socket对象的Accept()方法创建新的Socket对象和请求的客户端进行通信
* (6)通信结束后,关闭Socket对象
************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace server
{
class Program
{
static void Main(string[] args)
{
int port = 2000;
string host = "192.168.0.104";
IPAddress ip = IPAddress.Parse(host );//把IP地址字符串转换为IPAdderess类型
IPEndPoint ipe = new IPEndPoint(ip,port );//用IP和port初始化IPEndPoint类的新实例
//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字
Socket s = new Socket(AddressFamily.InterNetwork ,SocketType.Stream ,ProtocolType.Tcp );
s.Bind(ipe );//为新建的Socket实例绑定IPEndPonit对象
s.Listen(0);//开始监听
L:
Console.WriteLine("等待客户端");
Socket temp = s.Accept();//为新建的连接创建Socket对象
Console.WriteLine("建立连接");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes ,recvBytes.Length ,0);//从客户端接收信息
recvStr += Encoding.ASCII.GetString(recvBytes ,0,bytes );//把byte[]转换成字符串
Console.WriteLine("server get message:{0}",recvStr );
string sendStr = "ok!Client send message successful";
byte[] bs = Encoding.ASCII.GetBytes(sendStr );//把字符串转换成byte[]
temp.Send(bs,bs.Length ,0);//返回信息给客户端
temp.Close();
goto L;
s.Close();
Console.ReadLine();
}
}
}
/***********************************************************************
* 客户端
* (1)建指定的端口和IP建立IPEndPoint对象。
* (2)建立Socket对象
* (3)用Socket对象的Connect()方法,以上面建立的IPEndPoint对象为参数,向服务器发送连接请求
* (4)若连接服务器成功,则用Socket对象的Send方法向服务器发送数据
* (5)用Socket对象的Receive()方法接收服务器返回的信息
* (6)关闭Socket
************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace client
{
class Program
{
static void Main(string[] args)
{
try
{ Send:
int port = 2000;
string host = "192.168.0.104";
IPAddress ip = IPAddress.Parse(host);//将Ip地址由字符串转换为IPAddress类型
IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的IP和端口初始化IPEndPoint类的新实例
//建立Socket对象
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
c.Connect(ipe);//连接服务器
string sendStr = "";
Console.WriteLine("请输入要发送的信息:");
sendStr = Console.ReadLine();
byte[] bs = Encoding.ASCII.GetBytes(sendStr);//把字符串转换为byte类型
Console.WriteLine("Send Message");
c.Send(bs, bs.Length, 0);//向服务器发送信息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//接收服务器返回的信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine("Clinet get message:{0}", recvStr);
Console.ReadLine();
c.Close();
goto Send;
}
catch (ArgumentNullException e)
{
Console.WriteLine("argumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException:{0}", e);
}
Console.WriteLine("Press Enter to Exit");
}
}
}
分享到:
相关推荐
在这个“C#简单同步socket网络通讯”的示例中,我们将探讨如何使用C#的TcpClient、TcpListener和UdpClient类来实现基本的网络通信。 首先,TcpClient类是用于建立TCP连接的客户端对象。它提供了与远程服务器建立...
同步Socket,也称为阻塞Socket,是网络编程中一种基础且重要的通信机制,主要用于客户端与服务器之间的数据交换。在客户端-服务器模型中,同步Socket允许应用程序通过发送请求并等待响应来执行通信。以下是对同步...
在本文中,我们将深入探讨“同步Socket发送消息”的实例,这涉及到如何使用同步方式进行数据传输,并重点关注如何修改IP地址以适应不同的网络环境。 同步Socket(Synchronous Socket)也称为阻塞Socket,它在发送或...
"C# 同步Socket TCP/UDP 封装类"涉及到的关键知识点主要包括Socket的使用、TCP和UDP协议的理解、同步Socket编程模式以及如何设计和实现封装类。这些知识点对于开发网络应用至关重要,理解并掌握它们可以帮助开发者...
本文将深入探讨标题所提及的同步Socket在C#中的使用,以及如何实现多客户端通信。 同步Socket是一种基于阻塞模式的通信方式,意味着在数据传输过程中,程序会暂停执行,等待数据发送或接收完成后再继续执行后续代码...
自己刚刚弄SOCKET,网上的很多资源都是FORM的。我自己做了一个命令台的,服务器端长时间侦听端口,当一个客户端连上后,就起一个线程来接受数据,并发送信息。客户端可以接受服务器发回的信息。并且可以多个客户端...
"VC同步Socket TCP API聊天程序_一台服务器连n台客户机"这个项目涉及到的是使用Visual C++(VC)开发的一个同步Socket应用,它实现了基于TCP协议的多客户端与单一服务器的通信模型。下面将详细阐述相关的知识点。 1...
**同步Socket编程**指的是在执行Socket操作时,程序会阻塞直到该操作完成。在C#中,你可以通过调用`Socket.Send()`或`Socket.Receive()`方法来实现同步通信。这种方式简单直观,但当处理大量数据或连接数较大时,...
总的来说,同步Socket编程在某些特定情况下能够提供良好的性能和可读性,但需要注意的是,当客户端数量较大或者需要处理长连接时,同步Socket可能会导致线程资源的大量消耗,此时推荐使用异步Socket或者更高层次的...
同步Socket编程意味着发送和接收数据的操作会阻塞程序执行,直到数据传输完成。以下是一个简单的同步Socket服务器和客户端的实例: - **服务器端**: 1. 创建一个Socket实例,指定协议类型(如:`SocketType....
例如,当一个同步Socket调用`Receive()`或`Send()`方法时,如果数据没有完全接收或发送,程序会等待,这可能导致程序在处理高并发请求时效率降低。在`MSDN`提供的实例中,开发者可能会看到如何使用`Socket.Receive()...
【描述】中提到的博文链接指向了"iteye.com"上的一个博客条目,该博客可能详细解释了如何编写一个简单的同步Socket应用。通常,这样的例子会包括创建服务器端(Server)监听特定端口,等待客户端(Client)连接;...
同步Socket通信是阻塞式的,即在发送或接收数据时,程序会暂停执行,等待数据传输完成。这种方式简单易懂,适合数据量较小、实时性要求不高的场景。在服务器端,通常会创建一个Socket实例,使用`Bind`方法将其绑定到...
1. **同步Socket操作**: 同步操作通常适用于简单、短时间的通信。例如,服务器端创建一个Socket实例,绑定到特定的IP地址和端口,然后调用`Listen()`方法开始监听。当有客户端连接时,`Accept()`方法会阻塞,直到...
同步SOCKET通信 同步通信意味着发送方会等待接收方响应,直到数据传输完成。在服务器端,我们首先创建一个`Socket`对象,设置本机IP和监听的端口,并使用`Bind()`方法将其绑定。然后,使用`Listen()`方法启动监听,...
里面包含客户端和服务端一起,分开写的,所以大家能够看的详细一些,为了方便大家看的清楚,每一行都有详细...适用于刚学socket想要理解的同学,后期我还会上传异步的。里面有两个工程 第一个为服务端,第二个为客户端
### C__Socket编程_同步以及异步通信 #### 套接字简介 套接字是一种用于网络通信的编程接口,最初由Unix系统发展而来,随后Windows和其他操作系统也采纳了这一设计思想。套接字提供了应用程序之间通过网络进行通信...
2. **同步Socket编程** - **建立连接**:在同步模式下,`Socket`的`Connect()`方法会阻塞,直到与服务器建立连接。例如: ```csharp IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.1")...
同步Socket编程是指发送方在发送数据后会阻塞,等待接收方的响应,直到数据被接收或发生错误才会继续执行后续操作。这种方式简单直观,但效率较低,因为程序在等待响应时无法执行其他任务。以下是一个简单的同步...