當前位置:首頁 » 文件管理 » c遠程上傳文件

c遠程上傳文件

發布時間: 2022-10-08 16:40:23

① c 實現文件上傳,獲取客戶端瀏覽器信息

uc瀏覽器就不錯,它的安裝包很小,不佔內存,不影響運行,瀏覽網頁速度很快。感覺不到有延遲響應。它的安全體系很高,無痕瀏覽,可以保護你的上網隱私。它的架構新,穩定性能極強,速度很快,可以瞬間載入經常內容。謝謝望採納。

c語言實現文件上傳

用c語言調用java程序
java沒有程序這一說,只有java解釋器。
要讓c調用java的東西
看看這篇文章;
http://developer.ccidnet.com/art/818/20030217/38068_1.html
太長了,我就不帖了

③ c語言文件傳輸

伺服器端(發送文件):首先打開文件【fopen】,用rb方式打開,既可以發送文本文件,也可以發送二進制文件,在無錯時初始化套接字socket,即初始化socket庫【WSAStartup】,分配socket【socket】,填充伺服器的地址,即填充sockaddr_in結構,然後進行綁定【bind】,設置套接字為監聽套接字【listen】,接收連接【accept】,至此伺服器阻塞,等待客戶端的連接。
客戶端(接收文件):首先打開文件【fopen】,用wb方式打開,在無錯時初始化套接字socket,即初始化socket庫【WSAStartup】,分配socket【socket】,填充客戶端的地址,即填充sockaddr_in結構,然後進行綁定【bind】,再填充伺服器的地址結構,然後調用【connect】進行連接,當連接成功後,第一階段的工作便結束了。
第二階段,發送文件。
伺服器端:使用循環while,結束條件是(!feof(fp)),fp是文件指針,feof檢測當前的文件讀取指針是否到達文件尾部,若到達了就返回真,否則返回假。然後在循環內部依次調用【fread】、【send】進行發送。這里有一個問題需要注意,調用fread的時候有兩個參數是要每次讀多少位元組和讀多少次,將第一個設置為1,將第二個設置為緩沖區的大小,用一個變數記錄實際讀到多少位元組,即【fread】的返回值,然後將其傳遞給【send】,就可以實現發送文件了,在發送完成後斷開連接【closesocket】,關閉文件【fclose】。
客戶端:使用while死循環,調用【recv】接收文件,【fwrite】寫入文件,這里也有個和上面類似的問題,就是要將recv的返回值傳遞給fwrite的第三個參數,即受到了多少位元組,就向文件中寫多少位元組。當recv返回值為0時(連接斷開時)退出循環,【closesocket】關閉套接字,調用【fclose】關閉文件。

④ 怎麼用C實現Http POST功能向Http伺服器上傳文件

super viewDidLoad];
webview.backgroundColor = [UIColor clearColor];
webview.scalesPageToFit =YES;
webview.delegate =self;
NSURL *url =[[NSURL alloc] initWithString:@"http://www.google.com.hk/m?gl=CN&hl=zh_CN&source=ihp"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
[webview loadRequest:request];
}

⑤ 如何用c語言實現上傳文件

ftp 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為「文傳協議」。
1.C語言可以使用CStdioFile函數打開本地文件。使用類CInternetSession 創建並初始化一個Internet打開FTP伺服器文件。
CStdioFile繼承自CFile,一個CStdioFile 對象代表一個用運行時函數fopen 打開的C 運行時流式文件。
流式文件是被緩沖的,而且可以以文本方式(預設)或二進制方式打開。文本方式提供對硬回車—換行符對的特殊處理。當你將一個換行符(0x0A)寫入一個文本方式的CStdioFile 對象時,位元組對(0x0D,0x0A)被發送給該文件。當你讀一個文件時,位元組對(0x0D,0x0A)被翻譯為一個位元組(0x0A)。
CStdioFile 不支持Duplicate,LockRange,和UnlockRange 這幾個CFile 函數。如果在CStdioFile 中調用了這幾個函數,將會出現CNoSupported 異常。
使用類CInternetSession 創建並初始化一個或多個同時的Internet 會話。如果需要,還可描述與代理伺服器的連接。
如果Internet連接必須在應用過程中保持著,可創建一個類CWinApp的CInternetSession成員。一旦已建立起Internet 會話,就可調用OpenURL。CInternetSession會通過調用全局函數AfxParseURL來為分析映射URL。無論協議類型如何,CInternetSession 解釋URL並管理它。它可處理由URL資源「file://」標志的本地文件的請求。如果傳給它的名字是本地文件,OpenURL 將返回一個指向CStdioFile對象的指針。
如果使用OpenURL在Internet伺服器上打開一個URL,你可從此處讀取信息。如果要執行定位在伺服器上的指定的服務(例如,HTTP,FTP或Gopher)行為,必須與此伺服器建立適當的連接。

⑥ C語言安全文件傳輸程序設計。

安全文件傳輸程序?就是TCP傳輸吧:隨便寫了下,好多地方都沒怎麼驗證,比如待發送的文件是否存在;代碼如下(此程序用於WINDOWS,我用的是VC調試的,LINUX下方法略有不同)文件接收端:#pragma comment(lib,"ws2_32.lib")#include <stdio.h>
#include <io.h>
#include <winsock2.h>
#include <fcntl.h>
#include <sys\stat.h>
int recv_file(SOCKET sock)
{
char buffer[1024] = {0};
int name_len;
/*首先讀取sizeof(int) 即4個位元組的內容,伺服器發送文件名之前會把該文件名的長度發送過來*/
if (recv(sock,(char *)&name_len,sizeof(int),0) < 0)
{
printf("遠程伺服器斷開");
return -1;
}
/*接收即將傳輸文件的文件名*/
if (recv(sock,buffer,name_len,0))
{
printf("遠程伺服器斷開");
return -1;
}

/*創建該文件,最好此處加上判斷,該文件是否已經存在*/
int fd = open(buffer,O_RDWR|O_CREAT ,S_IFMT );
if (fd < 0)
{
printf("文件創建失敗\n");
return -1;
}

int recv_count = 0;
/*從套接字循環讀取文件內容*/
while ((recv_count = recv(sock,buffer,sizeof(1024),0))>0)
{
/*將讀取到的內容保存至文件,recv_count為從網路上讀取到得位元組數,然後原數保存至文件*/
write(fd,buffer,recv_count);
}
printf("文件接收完成,成功保存至當前目錄下\n");
return 0;
}
void main()
{
WSADATA wsa_data;
/*windows 下使用sock 必須調用這個函數,0x0202是一個版本號*/
WSAStartup(0x0202,&wsa_data); SOCKET s_sock;
/*創建套接字*/
s_sock = socket(AF_INET,SOCK_STREAM,0); /*定義本機綁定套接字需要的IPV4地址*/
sockaddr_in se_addr;
se_addr.sin_family = AF_INET;
se_addr.sin_port = htons(1024);/*指定埠號1024*/
se_addr.sin_addr.S_un.S_addr = INADDR_ANY;/*綁定本機任意網卡IP*/ /*將前兩步創建的套接字和IP地址綁定*/
bind(s_sock,(sockaddr*)&se_addr,sizeof(sockaddr)); /*開始啟動監聽服務*/
if (listen(s_sock,10)<0)
{
int err = GetLastError();
}
sockaddr_in from_addr;
int addr_len = sizeof(from_addr);
/*等待發送文件伺服器連接,此為阻塞函數*/
SOCKET temp_sock = accept(s_sock,(sockaddr *)&from_addr,&addr_len); /*有伺服器連接到本機,調用接收文件函數*/
recv_file(temp_sock);
} 文件發送端:#pragma comment(lib,"ws2_32.lib")#include <stdio.h>
#include <io.h>
#include <winsock2.h>
#include <fcntl.h>
#include <sys\stat.h>
int send_file(SOCKET sock,char *name)
{
int fd = open(name,O_RDWR ,S_IFMT );
if (fd < 0)
{
printf("文件打開失敗\n");
return -1;
} int name_len = strlen(name);
/*首先發送文件名的長度*/
send(sock,(char *)&name_len,sizeof(int),0);
/*發送文件名*/
send(sock,name,name_len,0);

char buffer[1024] = {0};
int read_count = 0;
/*循環從文件中讀取,然後寫入到套接字,發送到網路*/
while ((read_count = read(fd,buffer,sizeof(1024)))>0)
{
send(sock,buffer,read_count,0);
}
printf("文件發送完成\n");
return 0;
}
void main(int argc,char *argv[])
{
WSADATA wsa_data;
WSAStartup(0x0202,&wsa_data);
SOCKET s_sock;
s_sock = socket(AF_INET,SOCK_STREAM,0);

sockaddr_in to_addr;
to_addr.sin_family = AF_INET;
to_addr.sin_port = htons(1024);
/*指定接收文件IP為本機(127.0.0.1為本機IP),如其他主機請更改此IP,正常來說,IP應寫入配置文件*/
to_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

char file_name[256] = {0};
printf("請輸入要發送的文件名,並確保該文件存在於當前目錄下\n");
scanf("%s",file_name); /*連接接收文件的電腦*/
if (connect(s_sock,(sockaddr *)&to_addr,sizeof(sockaddr)) < 0)
{
printf("鏈接接受文件電腦失敗\n");
return;
} /*調用發送文件函數*/
send_file(s_sock,file_name);
}

⑦ 在asp.net中我已知C:\aa.txt這個文件了,在不用Html的file的情況下怎麼把他上傳到遠程的伺服器上啊

先寫到流,再保存到伺服器上

⑧ winsocket使用c實現文件傳輸具體如何操作

background: 知道如何建立連接,如何收發字元串

下面是一個簡單的實現:
1. client發送請求,比如 get [filename]
2. server讀取請求,並得到文件名。server查看是否有該文件,有的話給client發送ready的信號(字元串),client收到該信號後進入接收文件狀態。
3. server讀取文件到buf中,並按自定義協議的格式包裝文件數據。然後發送。
4. 頁頭上可以用一個欄位來指示是否為末頁,從而client可以判斷傳輸是否該結束。

文件分割可以參照ftp協議的「頁結構」:
http://www.zaoxue.com/article/tech-18239.htm

⑨ 如何用c實現fastcgi文件上傳

如果Internet連接必須在應用過程中保持著,可創建一個類CWinApp的CInternetSession成員。一旦已建立起Internet 會話,就可調用OpenURL。CInternetSession會通過調用全局函數AfxParseURL來為分析映射URL。無論協議類型如何,CInternetSession 解釋URL並管理它。它可處理由URL資源「file://」標志的本地文件的請求。如果傳給它的名字是本地文件,OpenURL 將返回一個指向CStdioFile對象的指針。

⑩ 我想用做一個C/S構架的程序連接到遠程伺服器oracle資料庫並上傳和下載文件,求高手指點。

我把以前寫的貼給你吧
1.我的是MSSQL的,你自己改改

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication10
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//
string connString = "自己改改";
private void btn_connection_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
}
MessageBox.Show("資料庫已經打開->關閉!");
}

private void btn_cmd_Click(object sender, EventArgs e)
{
string command = txt_cmd.Text;
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = command;
object str = cmd.ExecuteScalar();
MessageBox.Show("語句執行完畢,第一行第一列的數據是:" + str.ToString());
}
MessageBox.Show("資料庫連接斷開....");
}
}

private void btn_DataRead_Click(object sender, EventArgs e)
{
MessageBox.Show("在線讀取數據(不可斷開SQL連接)");
textBox1.Clear();
textBox1.Text = "開始在線讀取.....\n";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from province";
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
string proName = sdr["proName"].ToString();
string proID = sdr["proID"].ToString();
string keys = sdr["keys"].ToString();

textBox1.AppendText(proID+" "+proName + " "+keys+"\n");
}
MessageBox.Show("讀取結束");
}

}
}
}

private void Form1_Load(object sender, EventArgs e)
{
textBox1.ScrollBars = ScrollBars.Vertical;
}

private void btn_OnlineChange_Click(object sender, EventArgs e)
{
MessageBox.Show("在線修改數據(不可斷開SQL連接)");
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "insert into city(cityName,proID) values('美國',1)";
int i = cmd.ExecuteNonQuery();
MessageBox.Show("修改完畢,影響的行數:" + i.ToString());

}
}
}

private void btn_DataSet_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox1.Text = "開始離線讀取數據....\n";
MessageBox.Show("離線讀取數據(可以斷開SQL連接)");

using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from province";
SqlDataAdapter ada = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
ada.Fill(dataset);
DataTable datatable = dataset.Tables[0];
for (int i = 0; i < datatable.Rows.Count; i++)
{
DataRow dr = datatable.Rows[i];
string proID = dr["proID"].ToString();
string proName = dr["proName"].ToString();
string keys = dr["keys"].ToString();
string str = string.Format("第{0}行:{1} {2} {3} ", i + 1, proID, proName, keys);
textBox1.AppendText(str + "\n");
}

}
}

}

private void btn_LastChange_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox1.Text = "離線修改並讀取內存中的數據...\n";
MessageBox.Show("離線讀取數據(可以斷開SQL連接)");
DataSet dataset = new DataSet();
using (SqlConnection conn = new SqlConnection(connString))
{

conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from province";
using (SqlDataAdapter ada = new SqlDataAdapter(cmd))
{

ada.Fill(dataset);

//內存中修改
//第一張表
DataTable datatable = dataset.Tables[0];
//第一行的ProName修改為美國
DataRow dr = datatable.Rows[0];
dr["proName"] = "瑞士";
////增加一行,就是36行了
DataRow d = datatable.NewRow();
d["proID"] = 23;
d["proName"] = "丹陽";
d["keys"] = "D";
datatable.Rows.Add(d);
//移走第三行
//datatable.Rows.RemoveAt(2);注意:這是移走,不是刪除
for (int i = 0; i < datatable.Rows.Count; i++)
{
DataRow dr1 = datatable.Rows[i];
string proID = dr1["proID"].ToString();
string proName = dr1["proName"].ToString();
string keys = dr1["keys"].ToString();
string str = string.Format("第{0}行:{1} {2} {3} ", i + 1, proID, proName, keys);
textBox1.AppendText(str + "\n");

//更新到資料庫
SqlCommandBuilder scb = new SqlCommandBuilder(ada);
ada.Update(dataset);
}
}
}

}
}
}
}

熱點內容
db2資料庫別名 發布:2024-10-08 08:19:02 瀏覽:238
如何更換安卓系統時鍾 發布:2024-10-08 08:12:54 瀏覽:395
電腦創建伺服器軟體 發布:2024-10-08 08:12:47 瀏覽:475
如何防微信惡意找回密碼 發布:2024-10-08 08:01:58 瀏覽:812
aspnet存儲過程分頁 發布:2024-10-08 08:01:47 瀏覽:459
王者安卓怎麼拍高清視頻教程 發布:2024-10-08 07:57:04 瀏覽:262
酒吧燈光編程 發布:2024-10-08 07:52:42 瀏覽:7
別克英朗買15哪個配置好 發布:2024-10-08 07:43:38 瀏覽:236
android安裝sdk 發布:2024-10-08 07:42:41 瀏覽:328
qq空間音樂緩存 發布:2024-10-08 07:05:49 瀏覽:738