Socket(2)
来源:互联网 发布:linux grub2启动img 编辑:程序博客网 时间:2024/09/21 08:19
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Client
{
public class Connect
{
private Socket _client; //跟服务器连接的socket
private bool _connected; //socket连接状态,表示断开或已经连接两种情况
//连接服务器
public void ConnectServer(string ip, int port)
{
//创建一个Socket
_client = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(ip), port);//把ip和端口转化为IPEndPoint实例
_client.Connect(ep);
_connected = true;
}
//监听服务器
public void ListenServer(string ip, int port)
{
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(ip), port);//把ip和端口转化为IPEndPoint实例
//创建一个Socket
_client = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
_client.Bind(ep);//绑定EndPoint对像(2000端口和ip地址)
_client.Listen(0);//开始监听
// _client.Connect(ep);
_connected = true;
}
//返回连接状态
public bool Connected
{
get { return _connected; }
}
//关闭连接
public void CloseConnection()
{
if (_connected)
{
_client.Close();
_connected = false;
}
}
//发送消息
public void SendMessage(string message)
{
byte[] buffer = Encoding.ASCII.GetBytes(message);
_client.Send(buffer, buffer.Length, 0);
}
/// <summary>
/// //从服务器端接受返回信息
/// </summary>
/// <returns></returns>
public string ReceiveBytes(string recvStr)
{
byte[] recvBytes = new byte[1024];
int bytes;
bytes = _client.Receive(recvBytes, recvBytes.Length, 0);
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
return recvStr;
}
public Socket Accept_socket()
{
return _client.Accept();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Client
{
class Program
{
static void Main(string[] args)
{
try
{
int port = 2000;
string host = "127.0.0.1";
/**/
///创建终结点EndPoint
// IPAddress ip = IPAddress.Parse(host);
//IPAddress ipp = new IPAddress("127.0.0.1");
// IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndpoint实例
///**/
/////创建socket并连接到服务器
//Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建Socket
//Console.WriteLine("Conneting…");
//c.Connect(ipe);//连接到服务器
///**/
/////向服务器发送信息
//string sendStr = "hello!This is a socket test";
//byte[] bs = Encoding.ASCII.GetBytes(sendStr);//把字符串编码为字节
//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("client get message:{0}", recvStr);//显示服务器返回信息
///**/
/////一定记着用完socket后要关闭
//c.Close();
Connect cc = new Connect();
Console.WriteLine("Conneting...");
cc.ConnectServer(host, port);//连接到服务器
string sendStr = "hello!This is a socket test";
Console.WriteLine("Send Message");
cc.SendMessage(sendStr);//发送测试信息
string recvStr = "";
recvStr = cc.ReceiveBytes(recvStr);
Console.WriteLine("Client Get Message:{0}", recvStr);//显示服务器返回信息
cc.CloseConnection();
}
catch (ArgumentNullException e)
{
Console.WriteLine("argumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException:{0}", e);
}
Console.WriteLine("Press Enter to Exit");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using Client;
namespace server
{
class Program
{
static void Main(string[] args)
{
int port = 2000;
string host = "127.0.0.1";
Connect c = new Connect();
c.ListenServer(host, port);
Console.WriteLine("等待客户端连接");
/**/
///接受到client连接,为此连接建立新的socket,并接受信息
//Socket temp = s.Accept();//为新建连接创建新的socket
Console.WriteLine("建立连接");
Socket temp = c.Accept_socket();
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
/**/
///给client端返回信息
Console.WriteLine("server get message:{0}", recvStr);//把客户端传来的信息显示出来
string sendStr = "ok!Client send message successful!";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
temp.Send(bs, bs.Length, 0);//返回信息给客户端
temp.Close();
c.CloseConnection();
Console.ReadLine();
}
}
}
- Socket(2)
- socket-2
- socket(2)
- Socket编程实践(2) --Socket编程导引
- Socket编程实践(2) --Socket编程导引
- Socket编程实践(2) --Socket编程导引
- socket编程总结(2)
- Socket异步编程2
- socket编程2
- Socket 2 FLash
- Socket编程小结2
- SOCKET学习 2
- Socket封装2
- Socket (2) Client
- MTK socket 小结 2
- Java Socket 2
- MTK socket 小结 2
- java socket (2)
- jsp从数据库取得数据作为下拉菜单选项的实现
- 经验共享:HP-UX常用操作命令
- 用JSP编写文件上传的程序
- JSP数据库数据分页显示
- 高性能分页标签extremeTable的Limit设计架构思想剖析
- Socket(2)
- 浅谈Vista安装后越来越慢四大原因
- 布局类的介绍与使用
- 发个看看
- Tomcat下配置MySQL数据库连接池
- 目前大盘分析
- New Guy Join in
- NET一些接口含义和应用
- 支付宝的ITIL体验