新手学习Socket编程问题,搞不明白过程,感觉不符合逻辑

zdczdccccc zdczdccccc 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

//服务器端
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace SimpleUdpSrvr
{
class Program
{
static void Main(string[] args)
{
int recv;
byte[] data = new byte[1024];
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);//定义一网络端点
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//定义一个Socket
newsock.Bind(ipep);//Socket与本地的一个终结点相关联
Console.WriteLine("Waiting for a client..");

IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);//定义要发送的计算机的地址
EndPoint Remote = (EndPoint)(sender);//
recv = newsock.ReceiveFrom(data, ref Remote);//接受数据
Console.WriteLine("Message received from{0}:", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetBytes(data,0,recv));

string welcome = "Welcome to my test server!";
data = Encoding.ASCII.GetBytes(welcome);
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
while (true)
{
data = new byte[1024];
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
newsock.SendTo(data, recv, SocketFlags.None, Remote);//①①①①①①①①①
}
}
}
}




//客户端
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace SimpleUdpClient
{
class Program
{
static void Main(string[] args)
{
byte[] data = new byte[1024];//定义一个数组用来做数据的缓冲区
string input, stringData;
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
string welcome = "Hello,are you there?";
data = Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ipep);//②②②②②②②②②②

IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)sender;
data = new byte[1024];
int recv = server.ReceiveFrom(data, ref Remote);//接受来自服务器的数据

Console.WriteLine("Message received from{0}:", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
while (true)//读取数据
{
input = Console.ReadLine();//从键盘读取数据
if (input == "text")//结束标记
{
break;
}
server.SendTo(Encoding.ASCII.GetBytes(input), Remote);//将数据发送到指定的终结点Remote
data = new byte[1024];
recv = server.ReceiveFrom(data, ref Remote);//从Remote接受数据
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine(stringData);
}
Console.WriteLine("Stopping client");
server.Close();
}
}
}



将服务器端①处那行代码注释之后,编译通过,但无法正常发送消息,请问为什么
客户端②处那行不明白干啥的,sendTo应该是将消息发送给指定目的地啊,这不就是发给自己了,但是看运行结果是发送给了服务器端,不明白为什么啊
...全文

相关推荐

PHP的Socket网络编程入门指引

什么是TCP/IP、UDP?          TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。          UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。         这里有一张图,表明了这些协议的关系。 TCP/IP协议族包括运输层、网络层、链路层。现在你知道TCP/IP与UDP的关系了吧。 Socket在哪里呢?   在图1中,我们没有看到Socket的影子

weixin_38618784

socket+netty学习资源.txt

本链接包含socket网络编程进阶与实战,包括简易聊天等案例,还包括92节netty学习视频,感觉还不错,分享给大家

wangmumu_123

VB Socket编程

为数不多的直接调用Winsock API函数,来实现网络编程的资源。如果你感觉到使用VB提过的WinSock控件束手束脚,施展不开。那么本资源会给你最好的答案。 代码中还提过了一个ICom的接口,同过该接口也可以兼容其他的设备。

程序猿-小斑

c# 游戏 心痛的感觉(含源码)

c# 游戏 心痛的感觉(含源码) 感受经典 名副其实

flyxheng

基于socket的proxy

个例子涉及到了基本的网络编程的知识,从连接建立到数据收发,包括简单的编程模型(fork子进程,select/pselect多路I/O复用),还有简单的信号处理,socket选项设置,感觉作为网络编程入门熟悉一下挺好的。

clearriver
评论 9
收藏 已收藏
分享
返回顶部
zdczdccccc
C# 111,128 成员 642,536 内容