导航

Socket的简单例子

Posted on 2014-07-16 15:11  泡泡小虾  阅读(329)  评论(0编辑  收藏  举报

服务器端

using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net;
using System.Net.Sockets;//Socket相关的类

namespace ChatServer
{
class Program
{
static void Main(string[] args)
{

//创建服务器上的监听Socket对象,用来监听客户端的连接请求
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//公开一个IP地址和端口号(终结点EndPoint)
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 18888);
//将监听Socket对象绑定到终结点
server.Bind(ep); 
//开始监听,100指排队的队列长度
server.Listen(100);
Console.WriteLine("服务器已经启动了......");

//如果有客户端的连接请求,则接收该连接,自动启动一个数据收发的Socekt对象
Socket socket = server.Accept();

//接收数据
byte[] buffer = new byte[1024];
int length = socket.Receive(buffer);
Console.WriteLine(System.Text.Encoding.UTF8.GetString(buffer, 0, length));

string info = string.Format("At {0} Server Recive {1} byte info",DateTime.Now.ToString(),length);
socket.Send(System.Text.Encoding.UTF8.GetBytes(info));
}
}
}

 

客户端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net;
using System.Net.Sockets;

namespace ChatClient
{
class Program
{
static void Main(string[] args)
{
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Connect连接 的终结点是服务器公开的终结点
client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"),18888));
Console.WriteLine("连接成功了");

string info = "hello,I am mwh";
//发送数据
client.Send(System.Text.Encoding.UTF8.GetBytes(info));

byte[] buffer = new byte[1024];
int length = client.Receive(buffer);
Console.WriteLine(System.Text.Encoding.UTF8.GetString(buffer, 0, length));
}
}
}