注:很多代码是从高手那里弄来的,希望高手们莫怪,对你有用的帮忙顶下。
别忘记引进命名空间
using System.Net;
using System.Net.Sockets;
Sever
int port = 2000; //指定端口 (最后些在配置文件中)
String host = "127.0.0.1"; //指定IP
IPAddress ip = IPAddress.Parse(host);//把ip地址字符串转换为IPAddress类型的实例
IPEndPoint ipep = new IPEndPoint(ip, port);//用指定的端口和ip初始化IPEndPoint类的新实例
int recv;//用于表示客户端发送的信息长度
byte[]data=new byte[1024];//用于缓存客户端所发送的信息,通过socket传递的信息必须为字节数组
//IPEndPoint ipep=new IPEndPoint(IPAddress.Any,9050);//本机预使用的IP和端口(本人进行测试没有通过)
Socket newsock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
newsock.Bind(ipep);//绑定
newsock.Listen(10);//监听
Console.WriteLine("waiting for a client");
Socket client=newsock.Accept();//当有可用的客户端连接尝试时执行,并返回一个新的socket,用于与客户端之间的通信
IPEndPoint clientip=(IPEndPoint)client.RemoteEndPoint;
Console.WriteLine("connect with client:"+clientip.Address+"atport:"+clientip.Port);
string welcome="welcome here!";
data=Encoding.ASCII.GetBytes(welcome);
client.Send(data,data.Length,SocketFlags.None);//发送信息
while(true)
{//用死循环来不断的从客户端获取信息
data=new byte[1024];
recv=client.Receive(data);
Console.WriteLine("recv="+recv);
if(recv==0)//当信息长度为0,说明客户端连接断开
break;
Console.WriteLine(Encoding.ASCII.GetString(data,0,recv));
client.Send(data,recv,SocketFlags.None);
}
Console.WriteLine("Disconnected from"+clientip.Address);
client.Close();
newsock.Close();
Client
byte[] data = new byte[1024];
Socket newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Console.Write("please input the server ip:");
string ipadd = Console.ReadLine();
Console.WriteLine();
Console.Write("please input the server port:");
int port = Convert.ToInt32(Console.ReadLine());
IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port);//服务器的IP和端口
try
{
//因为客户端只是用来向特定的服务器发送信息,所以不需要绑定本机的IP和端口。不需要监听。
newclient.Connect(ie);
}
catch (SocketException e)
{
Console.WriteLine("unable to connect to server");
Console.WriteLine(e.ToString());
return;
}
int recv = newclient.Receive(data);
string stringdata = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine(stringdata);
while (true)
{
string input = Console.ReadLine();
if (input == "exit")
break;
newclient.Send(Encoding.ASCII.GetBytes(input));
data = new byte[1024];
recv = newclient.Receive(data);
stringdata = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine(stringdata);
}
Console.WriteLine("disconnect from sercer");
newclient.Shutdown(SocketShutdown.Both);
newclient.Close();
分享到:
相关推荐
C#Socket简单实例,Winform小程序,服务端发送,客户端监听,适合初学者。
一个简单的c#Socket学习实例,适合于初学者!
简单易懂的Socket发送接收实例,绝对可用; 压缩包中SocketClient为客户端,SocketTest为服务端; 可在客户端输入内容,按回车发送; 服务端会显示接收到的数据并做出回应...代码中注释也比较完整,为初学者用心打造;
一个最基本的C# Socket编程小例子,适合初学者。
C# WebSocket 服务端和网页端示例,初学者必备!
C# Socket通信两个最简单的实例 使用说明:先启动服务器端,然后再打开客户端进行连接 适合初学者
创建Socket实例,实现简单的发送和接收数据。适合初学者参考!
是初学者学习socket 编程的最好实例,能够帮助快速理解socket的原理和应用。
c#多人聊天实例 Socket 注释不多 水平也不够,供初学socket者参考
一个简单明了的,介绍Socket多线程编程的实例,对初学者很有帮助。
来公司一个月,做的东西.拿出来分享下.看着还凑活
关于socket多线程编程一个PPT讲解教程,比较详细,适合初学者。
本书主要讲C#网络编程,是一部非常好的学习用书,适合初学者
这份C#实例程序包含了30个实用的示例,涵盖了各种常见的编程场景和技巧。每个示例都经过精心设计和编写,旨在帮助开发者更好地理解和掌握C#...同时,这些示例也可以帮助初学者快速入门C#编程,节省学习和实践的时间。
异步Socket实现TCP网络服务的CS的通讯构架,各种的C#的异步Socket的常用实例,给初学者和进阶者都能带来不小的好处。
这是一个用C#开发,基于TCP/IP协议和Socket通讯的简单QQ小程序,供初学者参考和学习!
C# socket编程,适用于初学socket的学习者,带有实例!
C#实现的TCP服务端及客户端实例源代码 在winform框架下,使用vs2017工具,使用Socket编写 服务端具备:在线列表刷新显示,如果断开链接会自动剔除,防止占用连接。...非常适合初学者或毕业设计学习者使用。
最近学习C# Socket通讯,网上搜集了很多实例,基本都是发送不带验证的,测试效果不理想,自己边学习边编写,实现文件传输,发送文字,每次发送都确认接收端接收成功,简单数据处理,防止粘包,代码没有封装。对初学...
《C#全能速查宝典》不仅适合C#程序设计初学者,也可作为中、高级程序开发人员的参考手册。 ============================================================ 图书目录 第1章 C#语言基础 1 1.1 常用概念、关键字及...