導航:首頁 > 網路安全 > 網路編程聊天室如何實現文件傳輸

網路編程聊天室如何實現文件傳輸

發布時間:2022-02-01 21:12:08

1. 用vc++6.0打造的區域網聊天室如何實現文件傳輸

我也想要一個,謝謝

2. 如何實現區域網點對點通信:如聊天、文件傳輸

額,可以參考一下Active Messenger..............

上網路搜一下吧

3. 利用Python語言,設計一個網路聊天程序,實現網路通信或者文件傳輸

這個是很有意思,也簡單的話題 。你可以使用twisted, 或者是socket, 實現。 如果想優美些可以用stackless,也可以用greenlet。

最簡單的辦法是使用內置的httpserver,通過多線程socketserver,和simplehttpserver實現簡單的交互。

4. 怎樣用socket實現點對點的文件傳輸

在兩台計算機傳輸文件之前,必需得先有一台計算機建立套接字連接並綁定一個固定得埠,並在這個埠偵聽另外一台計算機的連接請求。

socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
socket.Blocking = true ;
IPEndPoint computernode1 = new IPEndPoint(serverIpadress, 8080);
socket.Bind(computernode1);
socket.Listen(-1);

當有其他的計算機發出連接請求的時候,被請求的計算機將對每一個連接請求分配一個線程,用於處理文件傳輸和其他服務。

while ( true )
{
clientsock = socket.Accept();
if ( clientsock.Connected )
{
Thread tc = new Thread(new ThreadStart(listenclient));
tc.Start();
}
}

下面的代碼展示了listenclient方法是如何處理另外一台計算機發送過來的請求。首先並對發送過來的請求字元串作出判斷,看看是何種請求,然後決定相應的處理方法。
void listenclient()
{
Socket sock = clientsock ;
try
{
while ( sock != null )
{
byte[] recs = new byte[32767];
int rcount = sock.Receive(recs,recs.Length,0) ;
string message = System.Text.Encoding.ASCII.GetString(recs) ;
//對message作出處理,解析處請求字元和參數存儲在cmdList 中
execmd=cmdList[0];
sender = null ;
sender = new Byte[32767];

string parm1 = "";
//目錄列舉
if ( execmd == "LISTING" )
{
ListFiles(message);
continue ;
}
//文件傳輸
if ( execmd == "GETOK" )
{
cmd = "BEGINSEND " + filepath + " " + filesize ;
sender = new Byte[1024];
sender = Encoding.ASCII.GetBytes(cmd);
sock.Send(sender, sender.Length , 0 );
//轉到文件下載處理
DownloadingFile(sock);
continue ;
}
}
}
catch(Exception Se)
{
string s = Se.Message;
Console.WriteLine(s);
}
}

至此,基本的工作已經完成了,下面我們看看如何處理文件傳輸的。
while(rdby < total && nfs.CanWrite)
{
//從要傳輸的文件讀取指定長度的數據
len =fin.Read(buffed,0,buffed.Length) ;
//將讀取的數據發送到對應的計算機
nfs.Write(buffed, 0,len);
//增加已經發送的長度
rdby=rdby+len ;
}
從上面的代碼可以看出是完成文件轉換成FileStream 流,然後通過NetworkStream綁定對應的套節子,最後調用他的write方法發送到對應的計算機。

我們再看看接受端是如何接受傳輸過來的流,並且轉換成文件的:

NetworkStream nfs = new NetworkStream(sock) ;
try
{
//一直循環直到指定的文件長度
while(rby < size)
{
byte[] buffer = new byte[1024] ;
//讀取發送過來的文件流
int i = nfs.Read(buffer,0,buffer.Length) ;
fout.Write(buffer,0,(int)i) ;
rby=rby+i ;
}
fout.Close() ;
從上面可以看出接受與發送恰好是互為相反的過程,非常簡單。

至此,單方向的文件傳輸就完成了,只需要在每個對等的節點上同時實現上面的發送和接受的處理代碼就可以做到互相傳輸文件了。

5. 利用Java編寫一個程序利用Socket,實現網路的點對點文件傳輸並且能實現聊天,發個給我學習下,好嗎

這個時比較簡單的。
package QQ;

import java.net.*;
import java.io.*;
import java.sql.*;
import java.util.*;

public class QQServer {
public static void main(String args[]) {
try {
HashMap<String , Socket> hm = new

HashMap<String , Socket>() ;
// 伺服器到8000埠監聽(1)
ServerSocket ss = new ServerSocket

(8000);

while (true) {
System.out.println("伺服器正在

8000埠監聽.....");
Socket s = ss.accept();

MyService t = new MyService();
t.setSocket(s) ;
t.setHashMap(hm) ;
t.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

class MyService extends Thread {
private Socket s ;
private HashMap<String , Socket> hm ;
public void setHashMap(HashMap<String , Socket> hm){
this.hm = hm ;
}
public void setSocket(Socket s){
this.s = s ;
}
public void run() {
try {
// 接收客戶端發送來的用戶名和密碼(2)
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader

(is);
BufferedReader br = new BufferedReader(isr);

String uandp = br.readLine();

// 拆分用戶名和密碼(4)
String u = "";
String p = "";
try{
u = uandp.split("%")[0];
p = uandp.split("%")[1];
}catch(Exception e){}

// 到資料庫中驗證(5)
Class.forName

("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection cn = DriverManager
.getConnection(

"jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=qq2",
"sa", "123");
PreparedStatement ps = cn
.prepareStatement("select

username from username where username=? and password=?");
ps.setString(1, u);
ps.setString(2, p);
ResultSet rs = ps.executeQuery();

// 發送確認信息到客戶端(7)
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new

OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw, true);

if (rs.next()) {
pw.println("ok");
//將自己的名字發送給HashMap中的其他人

(13)
for(Socket ts : hm.values()){
OutputStream tos =

ts.getOutputStream() ;
OutputStreamWriter tosw = new

OutputStreamWriter(tos) ;
PrintWriter tpw = new

PrintWriter(tosw , true) ;

tpw.println("user%"+u) ;
}
//將其他人的名字發送給自己(13)
for(String tu : hm.keySet()){
pw.println("user%"+tu) ;
}
//將用戶名和對應的Socket存入HashMap

(13)
hm.put(u, s) ;

// 接收客戶端發送來的信息(11)
while (true) {
String message = br.readLine

();

if(message.equals("exit")){
for(Socket ts :

hm.values()){
OutputStream

tos = ts.getOutputStream() ;

OutputStreamWriter tosw = new OutputStreamWriter(tos) ;
PrintWriter

tpw = new PrintWriter(tosw , true) ;

tpw.println

("exit%"+u);
}
hm.remove(u);
}
String to = message.split

("%")[0];
String mess = message.split

("%")[1];

Socket ts = hm.get(to);

OutputStream tos =

ts.getOutputStream();
OutputStreamWriter tosw = new

OutputStreamWriter(tos);
PrintWriter tpw = new

PrintWriter(tosw, true);

tpw.println("mess%"+mess

+"\n");
System.out.println(message);
}
} else {
pw.println("err");
}
} catch (Exception e) {}
}
}

6. 在java中 如何編寫tcp socket聊天室並且可以文件傳輸

這個用幾句話說不明白,Java程序設計(修訂本) 297頁里有源代碼,不過只是聊天兒程序,沒有文件傳輸,可以自己看著代碼加文件傳輸功能.

7. 怎麼在一個區域網聊天軟體內加入文件傳輸功能我要詳細步驟(c++)

既然你用 winsocks 實現了區域網聊天功能,那文件傳輸也並不難
只要你在接收文件的客戶端的指定目錄里創建一個文件,然後把接收到的數據段寫進去,最後再校檢一次看文件傳輸是否出錯就可以了

8. Linux中網路編程怎麼實現聊天和發送二進制文件

如果你想精通,那麼就按照如下順序:
1:首先看<Unix環境高級編程>,大概把Linux編程這塊了解了;
2:然後看<tcp/ip 詳解>這本書有點厚,慢慢看,把TCP/IP的協議都看懂,裡面就用了很多Linux程序代碼在講解;
3:最後看<UNIX網路編程卷>,上面寫了各種的網路編程方法等等;
如果你只是一時的學習下編程,那就看下<Unix環境高級編程>跟<UNIX網路編程卷>就好了,一般人這三本書隨便翻翻看個大概就好.
作者是史蒂文森,非常厲害的大師.

9. 我想用WinSocket實現區域網內的文件傳輸與聊天

程序源代碼

伺服器程序:

Private Sub Command1_Click() --退出按鈕

End

End Sub

Private Sub Command2_Click() --發送選項

Dim a As String

a = "伺服器:"

Winsockserver.SendData "(" & Time & ")" & vbCrLf & textsend.Text

textget.Text = textget.Text & a & "(" & Time & ")" & vbCrLf & textsend.Text & vbCrLf --可自動換行,並有時間顯示

textsend.Text = "" --發送完畢後,文本框自動清空

End Sub

Private Sub Command3_Click() --字體修改程序

CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects

CommonDialog1.ShowFont

If CommonDialog1.FontName > " " Then

textget.FontName = CommonDialog1.FontName

End If

textget.FontSize = CommonDialog1.FontSize

textget.FontBold = CommonDialog1.FontBold

textget.FontItalic = CommonDialog1.FontItalic

textget.FontStrikethru = CommonDialog1.FontStrikethru

textget.FontUnderline = CommonDialog1.FontUnderline

textget.ForeColor = CommonDialog1.Color

End Sub

Private Sub Form_Load() --程序載入,文本框不可見

textsend.Visible = False

textget.Visible = False

Winsockserver.LocalPort = 1001

Winsockserver.Listen

End Sub

Private Sub Winsockserver_Close()

Winsockserver.Close

End Sub

Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)

textsend.Visible = True --連接後,WinSock控制項工作

textsend.Text = ""

textget.Visible = True

textget.Text = ""

If Winsockserver.State <> sckClosed Then Winsockserver.Close

Winsockserver.Accept requestID

End Sub

Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)--信息接收

Dim tmpstr As String

Dim a As String

a = "客戶端:"

Winsockserver.GetData tmpstr

textget.Text = textget.Text & a & tmpstr & vbCrLf

Playsound (App.Path & "\sound\security.wav")

End Sub

Public Sub Playsound(WavFile As String) --調用聲音播放的文件

On Error Resume Next

Call sndPlaySound(WavFile$, SND_FLAG)

End Sub

客戶端

Private Sub Command1_Click() --退出

End

End Sub

Private Sub Command2_Click() --連接,且Shape控制項顯示連接狀態

winsockclient.Connect

Shape1.Visible = True

End Sub

Private Sub Command3_Click()

Dim aa As String

aa = "客戶端:"

winsockclient.SendData "(" & Time & ")" & vbCrLf & textsend.Text

textget.Text = textget.Text & aa & "(" & Time & ")" & vbCrLf & textsend.Text & vbCrLf

textsend.Text = ""

End Sub

Private Sub Command4_Click()

CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects

CommonDialog1.ShowFont

If CommonDialog1.FontName > " " Then

textget.FontName = CommonDialog1.FontName

End If

textget.FontSize = CommonDialog1.FontSize

textget.FontBold = CommonDialog1.FontBold

textget.FontItalic = CommonDialog1.FontItalic

textget.FontStrikethru = CommonDialog1.FontStrikethru

textget.FontUnderline = CommonDialog1.FontUnderline

textget.ForeColor = CommonDialog1.Color

End Sub

Private Sub Form_Load() --程序載入,文本框不可見

Text1.Text = "這里輸入要連接的伺服器的IP" --提示輸入IP地址

textsend.Visible = False

textget.Visible = False

winsockclient.RemotePort = 1001

winsockclient.RemoteHost = ""

End Sub

Private Sub Text1_Change()

winsockclient.RemoteHost = Text1.Text

End Sub

Private Sub Winsockclient_Close()

winsockclient.Close

End Sub

Private Sub Winsockclient_Connect()

textsend.Visible = True

textsend.Text = ""

textget.Visible = True

textget.Text = ""

Command2.Visible = False

End Sub

Private Sub Winsockclient_DataArrival(ByVal bytesTotal As Long) --信息接收

Dim tmpstr As String

Dim a As String

a = "伺服器:"

winsockclient.GetData tmpstr

textget.Text = textget.Text & a & tmpstr & vbCrLf

Playsound (App.Path & "\sound\security.wav")

End Sub

Public Sub Playsound(WavFile As String) --調用聲音播放的文件

On Error Resume Next

Call sndPlaySound(WavFile$, SND_FLAG)

End Sub

10. socket如何實現傳輸各種類型的文件

傳文件時,(不管什麼文件)
連接-->發送文件信息(文件名,長度等)-->讀數據-->發送文件數據

接受時
監聽-->等待連接-->接受文件信息-->接受文件數據-->寫入數據

你文件文件能傳,其他文件也是一樣的.可能是你的edcoding有問題吧.

閱讀全文

與網路編程聊天室如何實現文件傳輸相關的資料

熱點內容
如何刪除多餘的公用網路 瀏覽:907
三明網路營銷方式 瀏覽:720
網路路由器防盜 瀏覽:722
網路安全兒童畫內容 瀏覽:33
珠海篤行網路福州軟體開發 瀏覽:734
最美逆行者在哪個網路平台播出 瀏覽:128
哪裡可以找到網路在線答疑 瀏覽:466
hmscore顯示網路異常 瀏覽:554
手機打開數據沒網路怎麼辦 瀏覽:71
怎麼測網路信號屏蔽 瀏覽:646
網路連接剖析 瀏覽:736
移動網路市場化 瀏覽:213
平安口袋銀行網路連接異常 瀏覽:658
網路安全知識宣傳主題活動宣傳語 瀏覽:910
汽車里的軟體用的什麼網路 瀏覽:548
雲信網路電話忘記密碼怎麼登錄 瀏覽:36
網路3米什麼意思 瀏覽:853
四川網路研修如何記時 瀏覽:485
如何安裝自動切換網路 瀏覽:664
華為手機進入網路顯示4g的方法 瀏覽:214

友情鏈接