要求:
①用C#编写一个命令行/控制台hello world程序,实现如下功能:在屏幕上连续输出50行“hello cqjtu!重交物联2018级”;同时打开一个网络UDP 套接字,向室友电脑或树莓派发送这50行消息。
②用VS2015/2017 的C#编写一个简单的Form窗口程序,有一个文本框 textEdit和一个发送按钮button,运行程序后,可以在文本框里输入文字,如“hello cqjtu!重交物联2018级”,点击button,将这些文字发送给室友电脑或树莓派,采用UDP套接字;
③安装wireshark 抓包软件,抓取上述程序发送的网络包,对数据帧结构进行分析。按惯例要求,提交作业博客地址到学习通,完整资料提交邮件
用C#编写一个命令行实现窗口hello world程序
①
打开vs2017建立C#项目
②
再建立一个C#控制台程序
③
在跳出来的界面输入以下代码编写程序
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class example
{
static void Main(string[] args)
{
Console.WriteLine("hello world");
}
}
}
如图
点击调试-开始执行(不调试)
执行结果如下
服务端程序
在这里插入代码using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace UDP
{
class Program
{
static void Main(string[] args)
{
int recv;
byte[] data = new byte[1024];
//得到本机IP,设置TCP端口号
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 8000);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//绑定网络地址
server.Bind(ip);
Console.WriteLine("这是客户端, 主机名为: {0}", Dns.GetHostName());
//等待客户机连接
Console.WriteLine("等待客户端发送数据...");
//得到客户机IP
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
recv = server.ReceiveFrom(data, ref Remote);
Console.WriteLine("消息来自于: {0}: ", Remote.ToString());
Console.WriteLine(Encoding.Default.GetString(data, 0, recv));
//客户机连接成功后,发送信息
string welcome = "连接成功 ";
//字符串与字节数组相互转换
data = Encoding.Default.GetBytes(welcome);
//发送信息
server.SendTo(data, Remote);
while (true)
{
data = new byte[1024];
//发送接收信息
//从客户机接受消息
recv = server.ReceiveFrom(data, ref Remote);
//将字节流信息转换为字符串
string Data = Encoding.Default.GetString(data, 0, recv);
//将字符串输出到屏幕上
Console.WriteLine(Data);
// Console.WriteLine(Encoding.Default.GetString(data, 0, recv));
/*
//定义字符串input
string input;
//读取屏幕上的字符串
input = Console.ReadLine();
if (input == "exit")
break;
//将input发送至客户机
server.SendTo(Encoding.Default.GetBytes(input),Remote);*/
}
server.Close();
}
}
}
片`
结果
使用wireshark抓包
发送时
接受时
实现窗口helloworld
①
创建新项目
客户端程序
②
编写以下代码
using System;
using System.Windows.Forms;
namespace HelloworldWindow
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//通过点击实际完成数据的添加显示
showMsg();
}
void showMsg()
{
//向文本控件中添加HelloWorld
textBox1.AppendText("Hello World!" + "\t\n");
}
}
}
结果
服务端
wireshark抓包
这是我抓到的包,源地址是192.168.43.205,目的地址是192.168.43.165,使用协议为UDP,端口号为8000,长度为11字节,数据内容为hello world.
服务端
这是舍友抓到的包,源地址就是192.168.43.205,目的地址为192.168.43.165.内容为hello world,11字节,端口号为11,使用协议为UDP。