30/09/2018, 19:06

Cho em hỏi, đoạn code sau,chỗ địa chỉ ip từ server

Em đang làm một ứng dụng gửi file nhạc từ server to client, chỗ e khoanh tròn em chưa hiểu chút, cái ip address đó là nó lấy từ đâu v ạ? Khi chạy chương trình em thấy địa chỉ nó lấy ko giống địa chỉ máy em.

vũ xuân quân viết 21:22 ngày 30/09/2018

Nếu em có code toàn bộ dự án này thì em sẽ tìm xuống class DNS này để coi cấu hình.
Em đứa đoạn code này thì mọi người không giúp được gì. Em từ debug đi.

vũ xuân quân viết 21:22 ngày 30/09/2018

Em kiểm tra xem có class DNS không.
Coi class đó viết code như thế nào.

Huynh Nguyen viết 21:19 ngày 30/09/2018

Đây là toàn bộ đoạn code cả ở client lẫn server, code em tham khảo ở một số trang trên mạng, nhưng dốt lập trình còn nhiều chỗ chưa hiểu mong các đại ca giúp đỡ.
Server:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace Server
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

    private void button1_Click(object sender, EventArgs e)
    {
        openFileDialog1.ShowDialog();
        txt_Select.Text = openFileDialog1.FileName;

    }
    private void Form1_Load(object sender, EventArgs e)
    {
        label_Tenmaychu.Text = Dns.GetHostName();
        IPHostEntry hostName = Dns.GetHostByName(label_Tenmaychu.Text);
        IPAddress[] IP = hostName.AddressList;
        label_IP.Text = IP[0].ToString();
    }
    private void btSend_Click(object sender, EventArgs e)
    {
        IPAddress localIP = IPAddress.Parse(label_IP.Text);
        this.run(localIP);
    }

    private void run(IPAddress localIP)
    {
        TcpListener Listener = new TcpListener(localIP, int.Parse(txtPort.Text));
        Listener.Start();
        for(; ; )
        {
            Socket Client = Listener.AcceptSocket();
            if(Client.Connected)
            {
                SendFileToClient(Client, txt_Select.Text);
                Client.Close();
            }
            break;
        }
    }
    private void SendFileToClient(Socket Client, String filepath)
    {
        NetworkStream Stream = new NetworkStream(Client);
        System.IO.StreamWriter sWriter = new System.IO.StreamWriter(Stream);
        FileInfo file = new FileInfo(@filepath);
        String theString ;
        theString = file.Name;
        if(theString != null)
        {
            MessageBox.Show("Sending...{0}", theString);
            sWriter.WriteLine(theString);
            sWriter.Flush();
        }

        FileStream tempfile = new FileStream(file.FullName, FileMode.OpenOrCreate, FileAccess.Read);
        byte[] data = new byte[2560000];
        int byteRead;

        //Truyền file bằng nhị phân
        while ((byteRead = tempfile.Read(data, 0, 2560000)) > 0)
        {
            Stream.Write(data, 0, byteRead);

        }
        tempfile.Close();
        sWriter.Close();
    }
    
   
    private void label1_Click(object sender, EventArgs e)
    {

    }

    private void label1_Click_1(object sender, EventArgs e)
    {

    }    

   
}

}

Còn đây là client:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.IO;

namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

    private void btn_Nhan_Click(object sender, EventArgs e)
    {
        string links = "";
        TcpClient SckServer;
        try
        {
            SckServer = new TcpClient(txt_KhungServer.Text.Trim(), int.Parse(txt_KhungPort.Text));
        }
        catch
        {
            MessageBox.Show("Da co loi xay ra khi ket noi den Server at {0}: 65000 localhost");
            return;
        }
        NetworkStream NetStream = SckServer.GetStream();
        StreamReader StreamR = new StreamReader(NetStream);
        try
        {
            string output;
            //down file va dinh dang
            output = StreamR.ReadLine();
            if (output != null)
            {
                MessageBox.Show(output);
            }
            links = txt_KhungDuongDan.Text + "/" + output;
            //luu file
            FileStream newfile = new FileStream(links, FileMode.OpenOrCreate, FileAccess.Write);
            int byteread;
            byte[] data = new byte[256];
            while ((byteread = NetStream.Read(data, 0, 256)) > 0) 
            {
                newfile.Write(data, 0, byteread);
            }
            newfile.Close();
            NetStream.Close();

        }
        catch
        {
            MessageBox.Show("Exception reading from server");
            NetStream.Close();
        }
        axWindowsMediaPlayer1.URL = links;
       

        
    }

    private void btn_NoiNhan_Click(object sender, EventArgs e)
    {
        folderBrowserDialog1.ShowDialog();
        txt_KhungDuongDan.Text = folderBrowserDialog1.SelectedPath;
    }

}

}

vũ xuân quân viết 21:10 ngày 30/09/2018

anh không code về C++.
Class DNS là class có sẵn trong thư viện System.Net.
Anh mới tìm thấy trên mạng.
https://msdn.microsoft.com/en-us/library/system.net.dns(v=vs.110).aspx.

Em chạy debug, kiếm tra mấy label này lấy ở đâu.

  • label_Tenmaychu
  • label_IP
  • txtPort

Em tìm mấy chỗ khởi tạo của label này để biết giá trị khởi tạo như thế nào.

Bài liên quan
0