Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 8

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á

KHOA: CÔNG NGHỆ THÔNG TIN


Lập Trình Mạng
 Nội dung môn học
 Chương 1: Các khái niệm cơ bản về mạng máy tính
 Chương 2: Lập trình mạng với .NET
 Chương 3: Xây dựng ứng dụng mạng
 Chương 4: Hệ phân tán
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Lập Trình Mạng
3.4 UDP socket
 Udp socket hay còn gọi là socket hướng không kết nối
 Trong các chương trình ứng dụng mạng sử dụng giao
thức Udp khác với Tcp đó là việc trao đổi dữ liệu giữa
client và server không cần thiết lập một kết nối trước
 Udp socket sử dụng SocketType là dgram và
ProtocolType là UDP để gửi nhận dữ liệu giữa client
và server
 Dữ liệu được truyền đi bởi Udp socket không đáng tin
cậy, điều này có nghĩa là có thể xảy ra mất mát, tuy
nhiên ưu điểm của nó là quá trình trao đổi dữ liệu diễn
ra nhanh hơn so với Tcp socket
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Lập Trình Mạng
3.4.1 Các bước xây dựng ứng dụng Udp socket
 Viết chương trình phía máy chủ
 Tạo một socket
 Liên kết với một IPEndPoint cục bộ
 Gửi nhận dữ liệu theo giao thức đã thiết kế
 Đóng socket
 Viết chương trình phía máy khách
 Xác định địa chỉ của server
 Tạo socket
 Gửi nhận dữ liệu theo giao thức dã thiết kế
 Đóng socket
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Lập Trình Mạng
3.4.2 sơ đồ chương trình sử dụng Udp socket
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Lập Trình Mạng
3.4.2 Xây dựng chương trình sử dụng Udp socket
 Viết chương trình phía server
static void Main(string[] args)
{
IPAddress _ipaddress = IPAddress.Any;
IPEndPoint _ipendpoint = new IPEndPoint(_ipaddress, 2022);
Socket _socketserver = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
_socketserver.Bind(_ipendpoint);
// Ở Udp socket ta cần tạo một Remote IPEndPoint từ xa để
nhận dữ liệu về
IPEndPoint _remoteipendpoint = new IPEndPoint(IPAddress.Any, 0);
EndPoint _endpoint = (EndPoint)_remoteipendpoint;
byte[] _data = new byte[1024];
int _recv = _socketserver.ReceiveFrom(_data, ref _endpoint);
string _s = Encoding.Unicode.GetString(_data, 0, _recv);
Console.WriteLine("Nhận về từ client: ", _s);
_data = Encoding.Unicode.GetBytes("Xin chào Client");
_socketserver.SendTo(_data, _endpoint);
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Lập Trình Mạng
while (true)
{
_data = new byte[1024];
_recv = _socketserver.ReceiveFrom(_data, ref _endpoint);
_s = Encoding.Unicode.GetString(_data, 0, _recv);
if (_s.ToUpper().Equals("QUIT"))
{
break;
}
Console.WriteLine(_s);
_data = new byte[1024];
_data = Encoding.Unicode.GetBytes(_s);
_socketserver.SendTo(_data, 0, _data.Length, SocketFlags.None,
_endpoint);
}
Console.ReadKey();
_socketserver.Close();
}
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Lập Trình Mạng
 Viết chương trình phía client
class Program
{
static void Main(string[] args)
{
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
IPAddress _ipaddress = IPAddress.Parse("127.0.0.1");
IPEndPoint _ipendpoint = new IPEndPoint(_ipaddress, 2022);
Socket _socketclient = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
string _s = "Hello Server!...";
byte[] _data = new byte[1024];
_data = Encoding.Unicode.GetBytes(_s);
_socketclient.SendTo(_data, _ipendpoint);
//tạo endpoint nhận dữ liệu về từ server
EndPoint _endpoint = (EndPoint)_ipendpoint;
_data = new byte[1024];
int _recv = _socketclient.ReceiveFrom(_data, ref _endpoint);
_s = Encoding.Unicode.GetString(_data, 0, _recv);
Console.WriteLine("Nhận về từ Server: {0}", _s);
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA: CÔNG NGHỆ THÔNG TIN
Lập Trình Mạng
while (true)
{
_s = Console.ReadLine();
_data = new byte[1024];
_data = Encoding.Unicode.GetBytes(_s);
_socketclient.SendTo(_data, _endpoint);
if (_s.ToUpper().Equals("QUIT"))
{
break;
}
_data = new byte[1024];
_recv = _socketclient.ReceiveFrom(_data, ref _endpoint);
_s = Encoding.Unicode.GetString(_data, 0, _recv);
Console.WriteLine(_s);
}
Console.ReadKey();
_socketclient.Close();
}

You might also like