关于C#:c#怎么用socket?谢谢!

2024-12-04 08:25:47
推荐回答(5个)
回答1:

客户端:
Program类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace LCClient
{
class Program
{
static void Main(string[] args)
{
Socket sendMessage = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建套接字,参数具体定义参考MSDN
IPEndPoint ipp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);//定义目标主机的IP,与端口
sendMessage.Connect(ipp);//连接目标主机(服务器)
Console.WriteLine("请输入消息:");
string mgs = Console.ReadLine();//从控制台接受一组字符串
char[] cmgs = mgs.ToCharArray();//将字符串转换为字符类型的数组
byte[] message = new byte[1024];//定义byte数组,存放消息
message = Encoding.UTF8.GetBytes(cmgs);//将被发送的消息转换为byte类型的数组
sendMessage.Send(message);//向目标机发送消息
sendMessage.Close(); //关闭,连接
}
}
}

服务端:

ReceiveMessage类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace LCServer
{
class ReceiveMessage
{
private static StringBuilder ip = new StringBuilder();
///


/// 存放IP
///

public static StringBuilder Ip
{
get
set
}
///
/// 获取本机IP
///

public static void GetIpFun()
{
IPHostEntry ihe = Dns.GetHostEntry("");
foreach (IPAddress ipadd in ihe.AddressList)
{
Ip.Append(ipadd);
}
}
public static void ReceiveFun(int port)
{
GetIpFun();
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建socket
// IPEndPoint ipp = new IPEndPoint(IPAddress.Parse(Ip.ToString()), 1234);//设置端口和IP
IPEndPoint ipp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);//设置端口和IP
socket.Bind(ipp);//创建终结点
socket.Listen(10);//开始侦听,最多挂起数为10
byte[] bytes = new byte[1024];
Console.WriteLine("等待连接……");
Socket client = socket.Accept();//接收挂起的连接,并返回一个新的SOCKET
Console.WriteLine("连接成功,正在读取消息。");
client.Receive(bytes);//读取数据
string messages = Encoding.UTF8.GetString(bytes, 0, bytes.Length);//将数据转换为字符串
Console.WriteLine(messages);
}
}
}

Program类:

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

namespace LCServer
{
class Program
{
static void Main(string[] args)
{
ReceiveMessage.ReceiveFun(1234);
}
}
}

新建两个控制台应用程序,一个为服务端,一个为客户端。编译好后,先运行服务端,在运行客户端(如果反着运行会抛异常)。当然,其中的IP和端口可以根据你的情况进行更改。

这是一个非常精简的SOCKET,如果你能理解了,实现更加复杂的功能也不再话下。

回答2:

  1. 需要先确认是否需要建设服务端和客户端

  2. 如果需要建立服务端,可以到博客园找找服务端的源码,会有好多开源代码

  3. 如果只需要写客户端,那就更容易了,做到连接-接收数据-发送数据即可

  4. 要定义好数据的格式

回答3:

网页链接 早年写的一个C#版聊天工具,最近看到发出来。有些功能不好用了,只用作学习

回答4:

msdn看去。。。这么大范围的东西。。叫人怎么答?

回答5:

就那么用~