Socket通信简例
来源:互联网 发布:windows自带画图工具 编辑:程序博客网 时间:2024/05/16 01:01
今天实践了Socket通信,不过是简单的控制台示例,在此做个笔记,希望可以帮到一些人,也希望抛砖引玉,得到大神的指点~
先说说Server端
1 . 确定端口及主机IP;
2 . 利用IP初始化IPAddress类型的实例;
3 . 利用端口及IPAddress类型的实例初始化IPEndPoint类的实例;
4 . 新建Socket对象,绑定IPEndPoint类的实例;
5 . Socket开始监听;
6 . 接收到Client端链接,建立新的Socket;
7 . 接收Client端消息;
8 . 返回给Client端消息;
9 . 关闭Step 6中Socket;
10 . 关闭Step 4中Socket;
View code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace SocketTestServer
{
class Program
{
static void Main(string[] args)
{
//确定服务端端口及IP
int port = 2000;
string host = "127.0.0.1";
//利用IP创建IPAddress类型的实例
IPAddress ip = IPAddress.Parse(host);
//利用端口及IPAddress类型的实例创建IPEndPoint类的实例
IPEndPoint ipe = new IPEndPoint(ip, port);
//创建Socket对象
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//绑定IPEndPoint类的实例
s.Bind(ipe);
//Socket实例开始监听
s.Listen(0);
Console.WriteLine("Waiting Client connect Server!");
//接收到Client连接,为此连接建立新的Socket
Socket temp = s.Accept();//为新建连接创建新的socket
Console.WriteLine("Client Connected!");
while (true)
{
//接收Client端消息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine("Server receive message : {0}", recvStr);
//当接收到Client端“exit”消息,则返回给Client端“Exit”消息,并关闭Server端Socket
if (recvStr.Equals("exit"))
{
Console.WriteLine("Client request close connect!");
string sendExitStr = "Exit";
byte[] bs_exit = Encoding.ASCII.GetBytes(sendExitStr);
temp.Send(bs_exit, bs_exit.Length, 0);
goto End;
}
//输入文字,返回给client端
Console.WriteLine("Input your message send to client!");
string sendStr = Console.ReadLine();
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
temp.Send(bs, bs.Length, 0);
}
End:
{
//关闭Server端Socket
temp.Close();
s.Close();
Console.WriteLine("Socket Server closed!");
}
}
}
}
再来看Client端
1 . 确定端口及主机IP;
2 . 利用IP初始化IPAddress类型的实例;
3 . 利用端口及IPAddress类型的实例初始化IPEndPoint类的实例;
4 . 新建Socket对象;
5 . 向Server发送消息;
6 . 接收到Servert端返回的消息;
7 . 关闭Socket;
View code:
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace SocketTestClient
{
class Program
{
static void Main(string[] args)
{
//确定Server端端口及IP
int port = 2000;
string host = "127.0.0.1";
//利用IP创建IPAddress类型的实例
IPAddress ip = IPAddress.Parse(host);
//利用端口及IPAddress类型的实例创建IPEndPoint类的实例
IPEndPoint ipe = new IPEndPoint(ip, port);
//创建socket并连接到服务器
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Console.WriteLine("Client Conneting…");
c.Connect(ipe);
while (true)
{
///向Server发送信息
Console.WriteLine("Please input your message!");
string sendStr = Console.ReadLine();
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
Console.WriteLine("Send Message");
c.Send(bs, bs.Length, 0);
///接受从Server返回的信息
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("Client get message : {0}", recvStr);
//如果Server返回“Exit”消息,则关闭Client端Socket
if (recvStr.Equals("Exit"))
{
Console.WriteLine("Socket Server closed , Client close now!");
goto End;
}
}
End:
{
//关闭Client端Socket
c.Close();
Console.WriteLine("Client closed!");
}
}
}
}
- Socket通信简例
- Socket通信
- Socket通信
- socket通信
- Socket通信
- Socket通信
- socket通信
- socket通信
- socket通信
- socket 通信
- socket通信
- SOCKET通信
- Socket通信
- 通信 socket
- socket 通信
- socket通信
- socket通信
- socket通信
- 使用CALayer的Mask实现注水动画效果
- app开发过程中内存泄漏一些简述_懂了这些你的app还在闪退么?
- 文件夹的删除与复制
- linux 使用ls与du查看的大小不一样
- MIMO信道的信道容量
- Socket通信简例
- Valgrind 笔记
- 杭电OJ4544 湫湫系列故事——消灭兔子(优先队列过)
- 树莓派安装centos7
- python 统计代码行数,注释行数的简单实现
- 多天线信道容量
- directx 11.0 学习之 chapter 4 源码
- ubuntu出现乱码如何解决
- freetype安装使用详解(矢量字体操作)