C#socket类初步了解(客户端与服务端的建立)
来源:互联网 发布:python 字典值为数组 编辑:程序博客网 时间:2024/05/20 03:07
1.建立过程
服务端:
(1)建立socket
2)socket.bind(绑定ip,dns)
3)建立客户端sock(socke.accetp返回连接的客户端);
4)通信socket.send/recieve(发送/接受客户端信息),当然还有其他信息传输方法~
5)关闭socket(服务端要实施监控,可以不用关闭
客户端:
1)建立socket;
2)socket.conect(ip,服务器端口)//连接服务器
3)通信 socket.send/receive(还有其他方式);
4)关闭(socket.close());
/*******************实例**********/
客户端读取服务端的的电脑显示时间
我是建立在控制台上的程序
写的不好 仅供参考;
/*******************************/
DateTimeServer.sln
server.cs
//
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace DateTimeServer
{
class Server
{
static void Main(string[] args)
{
try
{
//
String hostname = Dns.GetHostName();//获得本机域名
IPAddress serverIp = Dns.GetHostEntry(hostname).AddressList[0];//本机ip
//DateTimeServer port =13
String Port = "13";//端口号设为13
IPEndPoint serverHost = new IPEndPoint(serverIp, Int32.Parse(Port));
Socket serverSocket = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(serverHost);
//backlog=50;
serverSocket.Listen(50);// 设置最大连接客户端50个
Console.WriteLine("dateTime server started at :" +
serverHost.Address.ToString() + ":" + Port);
ListenClient lc = new ListenClient(serverSocket);
ThreadStart serverThreadStart = new ThreadStart(lc.ServerThreadPro);
Thread serverThread = new Thread(serverThreadStart);
serverThread.Start();
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace.ToString());
}
finally
{
}
}
}
}
///
ListenClient.cs
//
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace DateTimeServer
{
public class ListenClient
{
private System.Net.Sockets.Socket serverSocket;
private System.Net.Sockets.Socket clientSocket;
//构造函数
public ListenClient(Socket serverSocket)
{
this.serverSocket = serverSocket;
}
public void ServerThreadPro()
{
while (true)
{
try
{
clientSocket = serverSocket.Accept();
IPEndPoint clientInfo = (IPEndPoint)
clientSocket.RemoteEndPoint;//获得客户端信息
IPEndPoint serverIfo = (IPEndPoint)
serverSocket.LocalEndPoint;//获得服务端信息
Console.WriteLine("Client: " + clientInfo.Address.ToString() + ":" +
clientInfo.Port.ToString());
Console.WriteLine("Server:" + serverSocket.AddressFamily.ToString() + ":" +
serverIfo.Port.ToString());
String strDate = DateTime.Now.ToShortDateString() + "" +
DateTime.Now.ToLongTimeString();
byte[] byteDate =
Encoding.ASCII.GetBytes(strDate.ToCharArray());
clientSocket.Send(byteDate, 0, byteDate.Length, SocketFlags.None);//向客户端发送信息
Console.WriteLine("to client: " + clientInfo.Address.ToString() +
":" + clientInfo.Port.ToString() + ":" + strDate);
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
}
catch(Exception ex){
Console.WriteLine(ex.StackTrace.ToString());
if (clientSocket.Connected)
clientSocket.Close();
}
}
}
}
}
客户端:
Client.cs
//using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;
namespace DateTimeClient
{
class Client
{
static void Main(string[] args)
{
try
{
Socket clientSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
IPAddress serverIp = IPAddress.Parse("172.19.82.54");
IPEndPoint serverHost = new IPEndPoint(serverIp, Int32.Parse("13"));
clientSocket.Connect(serverHost);
byte[] recvByte = new byte[1024];
int i = clientSocket.Receive(recvByte, 0, clientSocket.Available, SocketFlags.None);
string dateTime = Encoding.ASCII.GetString(recvByte, 0, i);
Console.WriteLine("receive{0}bytes", i);
Console.WriteLine("current server date/Time:{0}", dateTime);
clientSocket.Close();
return;
}
catch (Exception ex)
{
ex.StackTrace.ToString();
return;
}
}
}
}
- C#socket类初步了解(客户端与服务端的建立)
- C服务端与java客户端的socket通信注意事项
- ios socket编程初步:iphone客户端与java服务端通信
- 【初步了解】C#-Socket
- Socket客户端与服务端
- 网络 客户端 多种方法 建立与服务端的连接 接口:服务器名,IP socket connect
- C#socket通信(客户端和服务端)
- Windows客户端与Android服务端的Socket通信(USB)
- socket实现客户端与服务端的通讯(群聊)
- 基于tcp的socket通信(单个客户端与服务端)
- socket实现服务端与客户端的通讯
- 客户端与服务端的Socket通信
- socket客户端与服务端的通信
- 【C语言】【unix c】服务端与客户端建立通信的实例
- android 建立Socket长链接 服务端 - 客户端代码(+1)
- socket实现客户端与服务端通信(一)服务端
- socket实现客户端与服务端通信(三)服务端升级
- socket建立服务端和客户端之间通信
- 项目记录!
- C语言变量存储类型
- 我们应该考虑的问题
- 自我简介
- 巨人网络笔试题
- C#socket类初步了解(客户端与服务端的建立)
- Linux 技巧:重定向 stderr 和 stdout 输出到 gdb 窗口 挺不错 特别是里面的call调用
- File,FileInfo,FileStream,StreamReader的区别与用法
- Com/Dcom/Com+的思考
- GetMemory问题
- Unix下安装mysql
- .net oracleClient oracle9 客户端 链接oracle10G 服务器 server_name 不正确的 解决办法
- ubuntu 9.10 无法上网及pppoeconf的设置
- Oracle Foreign key