導航:首頁 > 編程語言 > tcp編程式控制制台輸入數據

tcp編程式控制制台輸入數據

發布時間:2022-08-03 12:26:32

❶ 如何使用TCP向遠端SERVER傳輸數據

如何使用TCP向遠端SERVER傳輸數據 (發送與接收) 1. 如何使用TCP向遠端SERVER傳輸數據 先要建立一個TCP連接.模塊作為CLIENT向遠程的SERVER發起一個TCP連接,要成功 建立連接需要SERVER端為連接到INTERNET的一台PC,而且該PC的IP地址是公網的IP地址 (可以用撥號的方式獲得,如在PC區域網內部則無法建立連接),然後該PC運行我們的 SERVER軟體,這時就可以在模塊端用AT命令與SERVER建立TCP連接(AT+CIPSTART= "TCP","SERVER的IP地址","SERVER的埠號"),連接成功後會返回CONNECT OK.然後就可以用AT+CIPSEND發送數據到SERVER,若SERVER有數據,模塊自動通過 串口接收.要關閉TCP連接可用AT+CIPCLOSE命令. 2. 如何使用UDP向遠端SERVER傳輸數據 先要注冊一個UDP埠(AT+CIPSTART="UDP","SERVER的IP地址","SERVER 的埠號"),成功後返回CONNECT OK.然後用AT+CIPSEND發送UDP包到SERVER, 若SERVER有數據,模塊自動接收,從串口送出. 3. 如何發送數據 要發送數據必須先要建立TCP連接或注冊一個UDP連接.有3種方式發送數據.可變長 度的數據發送可以用AT+CIPSEND命令,返回"$amp;>amp;$quot;後輸入發送的數據,ctrl+z(0x1a)啟動 發送.固定長度的數據發送用AT+CIPSEND=LENGTH命令,返回"> "後輸入發送的數據, 當輸入的數據長度等於LENGTH的時候自動發送,不需結束符.還有一種自動發送方式,先 用AT+CIPATS=,命令設定自動發送的時間,然後用AT+CIPSEND返回"$amp;>amp;$quot; 輸入要發送的數據,等定時到了之後自動發送輸入的數據.發送完成之後返回SEND OK. 此時處於命令態,若有數據發送再重復以上的步驟就可以了. 注意:每次發送的數據長度應小於1024bytes. 4. 如何接收數據 接收數據為自動接收,若有遠端數據則自動接收.可以用AT+CIPHEAD=1在接收的數 據前面自動加上標識. SIMCOM Application Note for SIM100 TCP/IP AT Commands 4 5. 如何使用SIM100TCP的SERVER功能 模塊可以配置為TCPSERVER,接收來自遠端的TCP數據.具體的操作如下: AT+CIPCSGP=1,"cmnet"(GPRS方式) AT+CLPORT="TCP","PORT" (設定偵聽的TCP的埠號) AT+CIPSERVER (啟動SERVER功能,成功後返回SERVER OK,這時候已經啟動了SERVER 功能,開始偵聽PORT) AT+CIFSR (獲得SERVER的IP地址) 或者: AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置為CSD連接,撥17201,用戶名和密 碼皆為172,連接速率為9600) AT+CLPORT="TCP","PORT"(設定偵聽的TCP埠號) AT+CIPSERVER(啟動SERVER功能,成功後返回CONNECT 9600 和 SERVER OK,這時 候已經啟動了SERVER功能,開始偵聽PORT) AT+CIFSR (獲得SERVER的IP地址) 可以用SMS通知遠端模塊本SERVER的IP地址和埠號,以便遠端可以與之連接,收發 數據. 這時遠端的模塊就可以與本SERVER建立連接,收發數據了. 如有CLIENT連接到SERVER,SERVER端會顯示 REMOTE CLIENT的IP地址和埠號. 這時候SERVER就可以接收來自REMOTE CLIENT的TCP數據包(不含TCP頭)了. 注意:目前TCP SERVER不能同時支持多個TCP連接. SIMCOM Application Note for SIM100 TCP/IP AT Commands 5 6. 如何使用UDP,接收來自遠端的數據 可以使用SIM100TCP的UDP功能,接收來自遠端的UDP數據.具體過程如下: AT+CIPCSGP=1,"cmnet"(GPRS方式) AT+CLPORT="UDP","埠號"(設置UDP埠號) AT+CSTT (啟動TCP任務,成功後返回OK) AT+CIICR (激活場景,成功後返回OK) AT+CIFSR (獲得本地IP地址) AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注冊UDP 連接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以隨便設置一個,成功 後返回CONNECT OK) 或者 AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置為CSD連接,撥17201,用戶名 和密碼皆為172,連接速率為9600) AT+CLPORT="UDP","PORT"(設定UDP埠號) AT+CSTT (啟動TCP任務) AT+CIICR (激活場景,成功後返回CONNECT 9600和OK) AT+CIFSR (獲得本地IP地址) AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注冊UDP 連接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以隨便設置一個,成功 後返回CONNECT OK) 此時就模塊就可以接收到遠端的UDP包.可以用AT+CIPSRIP=1在收到的UDP包的前面 加上標識和發送方的IP地址和埠號. SIMCOM Application Note for SIM100 TCP/IP AT Commands 6 7. 如何使用DNS功能 利用SIM100TCP的DNS可直接連接到一個域名,或者可以用DNS解析域名獲得IP地址.具體 步驟如下: 直接連接到一個域名 1:先配置DNS AT+CDNSCFG="211.136.18.171" (以上海為例) 2:選擇域名還是IP地址 AT+CDNSORIP=1(選擇域名) 3:建立連接 AT+CIPSTART="TCP","", "80" (連接到SERVER) 4:發送數據 AT+CIPSEND返回"$amp;>amp;$quot;後開始發送數據,ctrl+z啟動發送. 解析域名獲得IP地址 1:先激活一個移動場景 AT+CSTT AT+CIICR AT+CIFSR 2:配置DNS AT+CDNSCFG="211.136.18.171" (以上海為例) 3:解析域名,獲得IP地址 AT+CDNSGIP="" 返回該域名的IP地址 8. 如何檢測是否在線,斷線後有什麼提示 可以用AT+CIPSTATUS查詢TCP所處的狀態,具體狀態請參考AT命令集,若處於連接 狀態則返回CONNECTOK.斷線後會主動返回CLOSE信息,同時TCP狀態為IP CLOSE. 9. 如何區分接收的數據是AT命令的響應還是來自遠端 設定AT+CIPHEAD=1,這樣來自SERVER的數據前面就會自動加上一個標志,其格式 為:+IPD(datalength),+IPD為標識,datalength為來自SERVER端數據的長度.這樣就可以 區分是來自SERVER的數據還是AT命令的相應. SIMCOM Application Note for SIM100 TCP/IP AT Commands 7 10. 如何使用SIM100TCP建立點對點的TCP連接,傳輸數據 用GPRS方式的具體步驟為: 第一台: AT+CLPORT="TCP","3030" AT+CIPSERVER (啟動SERVER功能,開始偵聽3030埠) AT+CIFSR(獲取本地IP地址) AT+CLPORT="TCP","3000"(設置本地TCP埠) 第二台: AT+CLPORT="TCP","2020" AT+CIPSERVER (啟動SERVER功能,開始偵聽2020埠) AT+CIFSR(獲取本地IP地址) AT+CLPORT="TCP","2000"(設置本地TCP埠) 第一台: AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由對方發SMS 得到) 已經建立連接 第二台: AT+CIPSTART="TCP","REMOTE IP ADDR","3030" 已經建立連接 之後任何一方就可以向另外一方發數據(用AT+CIPSEND發送) 也可以用CSD方式建立,具體操作如下: 第一台: AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置為CSD連接,撥17201,用戶名和 密碼皆為172,連接速率為9600) AT+CLPORT="TCP","3030" AT+CIPSERVER (啟動SERVER功能,開始偵聽3030埠) AT+CIFSR(獲取本地IP地址) AT+CLPORT="TCP","3000" 第二台: AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置為CSD連接,撥17201,用戶名和 密碼皆為172,連接速率為9600) AT+CLPORT="TCP","2020" AT+CIPSERVER (啟動SERVER功能,開始偵聽2020埠) AT+CIFSR(獲取本地IP地址) AT+CLPORT="TCP","2000" SIMCOM Application Note for SIM100 TCP/IP AT Commands 8 第一台: AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由對方發SMS 得到) 已經建立連接 第二台: AT+CIPSTART="TCP","REMOTE IP ADDR","3030" 已經建立連接 之後任何一方就可以向另外一方發數據(用AT+CIPSEND發送) SIMCOM Application Note for SIM100 TCP/IP AT Commands 9 11. 如何使用SIM100TCP實現多個模塊之間的互相通信 目前SIM100TCP不支持多個TCP同時連接,但是可以用UDP方式來實現.可以用模塊啟 動UDP功能,這樣模快就可以接收來自遠端的UDP包,可以通過收到的UDP包獲取發送方的 IP地址和埠號,然後本模塊就可以作出應答,回應一個UDP包,實現相互的通訊.下面是 一個簡單的例子: 假設A,B,C三個模塊要相互通信,可以用以下的方式實現(以GPRS方式為例) 1:A,B,C分別初始化如下: AT+CIPCSGP=1,"cmnet"(GPRS方式) AT+CLPORT="UDP","埠號"(設置UDP埠號) AT+CSTT (啟動TCP任務,成功後返回OK) AT+CIICR (激活場景,成功後返回OK) AT+CIFSR (獲得本地IP地址) AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注冊UDP 連接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以隨便設置一個,成功後返回 CONNECT OK) 2:若A要向B發送數據,只要這樣就可以了: AT+CIPCLOSE (注銷當前UDP連接) AT+CIPSTART="UDP","B的IP地址","B的埠號"(注冊新的UDP連接) (成功後會返回CONNECTOK和OK) AT+CIPSEND (發送數據) 若C有數據發給A,則A自動接收到,同時可以獲得C的IP地址和埠號,這樣A就可以 發UDP包給C了,具體過程跟上面類似. SIMCOM Application Note for SIM100 TCP/IP AT Commands 10 12. TCP連接出錯後應該如何處理 若在建立TCP連接的過程中出現錯誤或者SERVER斷線,則先用AT+CIPCLOSE關閉 TCP連接(本地IP地址不變),然後再重新建立連接.若其他時候可以用AT+CIPSHUT關閉 PDP Context(本地IP地址會改變),然後重新建立連接. 13. 如何建立一個點對點的CSD連接 首先要確保SIM卡已開通CSD業務,直接呼叫對方號碼(數據呼叫,非語音呼叫),對 方用ATA應答,然後會返回CONNECT 9600,這時候雙方進入完全的透明數據傳輸狀態,雙 方都可以收發數據,發+++後返回命令態(注意+++的前後0.5秒內必須無數據傳輸才能返回 命令態),ATO可返回數據態.ATH可結束本次CSD連接.

❷ 用java編寫TCP文件傳輸程序

1.調用類java.lang.Math的成員方法「public static double random()」運算下面表達式10000次,
(int) (Math.random()*20+0.5)
統計其中生成的整數10,1,2,…,20的個數分別是多少,並輸出統計結果。

2.調用類java.lang.Math的成員方法「public static double random()」設法生成10個互不相同的從『a'到'z'字母,然後對這10個字母按從小到大的方式排序。輸出排序前的字母序列和排序後的字母序列。

3.編寫一個程序,要求輸入5個學生的成績(從0到100的整數),並將這5個數保存到文件「data.txt"中。然後再編寫一個程序,從文件「data.txt」中讀取這5個學生的成績,計算並輸出它們的平均數,然後再按照從小到大的順序輸出這5個學生的成績。

4.編寫一個程序,修改在上一題生成的文件「data.txt」中的文件內容,使得第三個學生的成績變成為這5個學生的平均成績,並在控制台窗口中輸出在修改之後的文件內容

❸ 關於java編程。設計一個基於TCP/IP協議的網路程序,實現如下功能:

寫好了,有什麼問題請追問。
客戶端:

import java.net.*;
import java.io.*;

public class TestSocketClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 5566);
System.out.println("請輸入計算式:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s1 = br.readLine();
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
dos.writeUTF(s1);
dos.flush();

double s = dis.readDouble();
System.out.println("計算結果:" + s);
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("連接出錯");
System.exit(-1);
}
}
}

伺服器端:
import java.net.*;
import java.io.*;

public class TestSocketServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(5566);
Socket socket = ss.accept();

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
String s = null;
if ((s = dis.readUTF()) != null) {
System.out.println("接收到的算式:" + s);
double result = 0;
String[] sarr1 = s.split("[\\+\\-\\*\\/]");

double a = Double.parseDouble(sarr1[0].trim());
double b = Double.parseDouble(sarr1[1].trim());

String[] sarr2 = s.split("^(-?\\d+)(\\.\\d+)?");
char c = sarr2[1].trim().charAt(0);
switch (c) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
default:
break;
}
dos.writeDouble(result);
dos.flush();
}
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}

}
}

❹ 怎麼使用TCP向遠端SERVER傳輸數據

如何使用TCP向遠端SERVER傳輸數據 (發送與接收)
1. 如何使用TCP向遠端SERVER傳輸數據
先要建立一個TCP連接.模塊作為CLIENT向遠程的SERVER發起一個TCP連接,要成功
建立連接需要SERVER端為連接到INTERNET的一台PC,而且該PC的IP地址是公網的IP地址
(可以用撥號的方式獲得,如在PC區域網內部則無法建立連接),然後該PC運行我們的
SERVER軟體,這時就可以在模塊端用AT命令與SERVER建立TCP連接(AT+CIPSTART=
"TCP","SERVER的IP地址","SERVER的埠號"),連接成功後會返回CONNECT
OK.然後就可以用AT+CIPSEND發送數據到SERVER,若SERVER有數據,模塊自動通過
串口接收.要關閉TCP連接可用AT+CIPCLOSE命令.
2. 如何使用UDP向遠端SERVER傳輸數據
先要注冊一個UDP埠(AT+CIPSTART="UDP","SERVER的IP地址","SERVER
的埠號"),成功後返回CONNECT OK.然後用AT+CIPSEND發送UDP包到SERVER,
若SERVER有數據,模塊自動接收,從串口送出.
3. 如何發送數據
要發送數據必須先要建立TCP連接或注冊一個UDP連接.有3種方式發送數據.可變長
度的數據發送可以用AT+CIPSEND命令,返回"$amp;>amp;$quot;後輸入發送的數據,ctrl+z(0x1a)啟動
發送.固定長度的數據發送用AT+CIPSEND=LENGTH命令,返回"> "後輸入發送的數據,
當輸入的數據長度等於LENGTH的時候自動發送,不需結束符.還有一種自動發送方式,先
用AT+CIPATS=,命令設定自動發送的時間,然後用AT+CIPSEND返回"$amp;>amp;$quot;
輸入要發送的數據,等定時到了之後自動發送輸入的數據.發送完成之後返回SEND OK.
此時處於命令態,若有數據發送再重復以上的步驟就可以了.
注意:每次發送的數據長度應小於1024bytes.
4. 如何接收數據
接收數據為自動接收,若有遠端數據則自動接收.可以用AT+CIPHEAD=1在接收的數
據前面自動加上標識.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
4
5. 如何使用SIM100TCP的SERVER功能
模塊可以配置為TCPSERVER,接收來自遠端的TCP數據.具體的操作如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="TCP","PORT" (設定偵聽的TCP的埠號)
AT+CIPSERVER (啟動SERVER功能,成功後返回SERVER OK,這時候已經啟動了SERVER
功能,開始偵聽PORT)
AT+CIFSR (獲得SERVER的IP地址)
或者:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置為CSD連接,撥17201,用戶名和密
碼皆為172,連接速率為9600)
AT+CLPORT="TCP","PORT"(設定偵聽的TCP埠號)
AT+CIPSERVER(啟動SERVER功能,成功後返回CONNECT 9600 和 SERVER OK,這時
候已經啟動了SERVER功能,開始偵聽PORT)
AT+CIFSR (獲得SERVER的IP地址)
可以用SMS通知遠端模塊本SERVER的IP地址和埠號,以便遠端可以與之連接,收發
數據.
這時遠端的模塊就可以與本SERVER建立連接,收發數據了.
如有CLIENT連接到SERVER,SERVER端會顯示 REMOTE CLIENT的IP地址和埠號.
這時候SERVER就可以接收來自REMOTE CLIENT的TCP數據包(不含TCP頭)了.
注意:目前TCP SERVER不能同時支持多個TCP連接.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
5
6. 如何使用UDP,接收來自遠端的數據
可以使用SIM100TCP的UDP功能,接收來自遠端的UDP數據.具體過程如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="UDP","埠號"(設置UDP埠號)
AT+CSTT (啟動TCP任務,成功後返回OK)
AT+CIICR (激活場景,成功後返回OK)
AT+CIFSR (獲得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注冊UDP
連接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以隨便設置一個,成功
後返回CONNECT OK)
或者
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置為CSD連接,撥17201,用戶名
和密碼皆為172,連接速率為9600)
AT+CLPORT="UDP","PORT"(設定UDP埠號)
AT+CSTT (啟動TCP任務)
AT+CIICR (激活場景,成功後返回CONNECT 9600和OK)
AT+CIFSR (獲得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注冊UDP
連接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以隨便設置一個,成功
後返回CONNECT OK)
此時就模塊就可以接收到遠端的UDP包.可以用AT+CIPSRIP=1在收到的UDP包的前面
加上標識和發送方的IP地址和埠號.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
6
7. 如何使用DNS功能
利用SIM100TCP的DNS可直接連接到一個域名,或者可以用DNS解析域名獲得IP地址.具體
步驟如下:
直接連接到一個域名
1:先配置DNS
AT+CDNSCFG="211.136.18.171" (以上海為例)
2:選擇域名還是IP地址
AT+CDNSORIP=1(選擇域名)
3:建立連接
AT+CIPSTART="TCP","", "80" (連接到SERVER)
4:發送數據
AT+CIPSEND返回"$amp;>amp;$quot;後開始發送數據,ctrl+z啟動發送.
解析域名獲得IP地址
1:先激活一個移動場景
AT+CSTT
AT+CIICR
AT+CIFSR
2:配置DNS
AT+CDNSCFG="211.136.18.171" (以上海為例)
3:解析域名,獲得IP地址
AT+CDNSGIP=""
返回該域名的IP地址
8. 如何檢測是否在線,斷線後有什麼提示
可以用AT+CIPSTATUS查詢TCP所處的狀態,具體狀態請參考AT命令集,若處於連接
狀態則返回CONNECTOK.斷線後會主動返回CLOSE信息,同時TCP狀態為IP CLOSE.
9. 如何區分接收的數據是AT命令的響應還是來自遠端
設定AT+CIPHEAD=1,這樣來自SERVER的數據前面就會自動加上一個標志,其格式
為:+IPD(datalength),+IPD為標識,datalength為來自SERVER端數據的長度.這樣就可以
區分是來自SERVER的數據還是AT命令的相應.

SIMCOM Application Note for SIM100 TCP/IP AT Commands
7
10. 如何使用SIM100TCP建立點對點的TCP連接,傳輸數據

用GPRS方式的具體步驟為:

第一台:
AT+CLPORT="TCP","3030"
AT+CIPSERVER (啟動SERVER功能,開始偵聽3030埠)
AT+CIFSR(獲取本地IP地址)
AT+CLPORT="TCP","3000"(設置本地TCP埠)

第二台:
AT+CLPORT="TCP","2020"
AT+CIPSERVER (啟動SERVER功能,開始偵聽2020埠)
AT+CIFSR(獲取本地IP地址)
AT+CLPORT="TCP","2000"(設置本地TCP埠)

第一台:
AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由對方發SMS
得到)
已經建立連接

第二台:
AT+CIPSTART="TCP","REMOTE IP ADDR","3030"
已經建立連接

之後任何一方就可以向另外一方發數據(用AT+CIPSEND發送)

也可以用CSD方式建立,具體操作如下:

第一台:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置為CSD連接,撥17201,用戶名和
密碼皆為172,連接速率為9600)
AT+CLPORT="TCP","3030"
AT+CIPSERVER (啟動SERVER功能,開始偵聽3030埠)
AT+CIFSR(獲取本地IP地址)
AT+CLPORT="TCP","3000"

第二台:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置為CSD連接,撥17201,用戶名和
密碼皆為172,連接速率為9600)
AT+CLPORT="TCP","2020"
AT+CIPSERVER (啟動SERVER功能,開始偵聽2020埠)
AT+CIFSR(獲取本地IP地址)
AT+CLPORT="TCP","2000"
SIMCOM Application Note for SIM100 TCP/IP AT Commands
8

第一台:
AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由對方發SMS
得到)
已經建立連接

第二台:
AT+CIPSTART="TCP","REMOTE IP ADDR","3030"
已經建立連接

之後任何一方就可以向另外一方發數據(用AT+CIPSEND發送)

SIMCOM Application Note for SIM100 TCP/IP AT Commands
9
11. 如何使用SIM100TCP實現多個模塊之間的互相通信
目前SIM100TCP不支持多個TCP同時連接,但是可以用UDP方式來實現.可以用模塊啟
動UDP功能,這樣模快就可以接收來自遠端的UDP包,可以通過收到的UDP包獲取發送方的
IP地址和埠號,然後本模塊就可以作出應答,回應一個UDP包,實現相互的通訊.下面是
一個簡單的例子:
假設A,B,C三個模塊要相互通信,可以用以下的方式實現(以GPRS方式為例)
1:A,B,C分別初始化如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="UDP","埠號"(設置UDP埠號)
AT+CSTT (啟動TCP任務,成功後返回OK)
AT+CIICR (激活場景,成功後返回OK)
AT+CIFSR (獲得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注冊UDP
連接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以隨便設置一個,成功後返回
CONNECT OK)
2:若A要向B發送數據,只要這樣就可以了:
AT+CIPCLOSE (注銷當前UDP連接)
AT+CIPSTART="UDP","B的IP地址","B的埠號"(注冊新的UDP連接)
(成功後會返回CONNECTOK和OK)
AT+CIPSEND (發送數據)
若C有數據發給A,則A自動接收到,同時可以獲得C的IP地址和埠號,這樣A就可以
發UDP包給C了,具體過程跟上面類似.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
10
12. TCP連接出錯後應該如何處理
若在建立TCP連接的過程中出現錯誤或者SERVER斷線,則先用AT+CIPCLOSE關閉
TCP連接(本地IP地址不變),然後再重新建立連接.若其他時候可以用AT+CIPSHUT關閉
PDP Context(本地IP地址會改變),然後重新建立連接.
13. 如何建立一個點對點的CSD連接
首先要確保SIM卡已開通CSD業務,直接呼叫對方號碼(數據呼叫,非語音呼叫),對
方用ATA應答,然後會返回CONNECT 9600,這時候雙方進入完全的透明數據傳輸狀態,雙
方都可以收發數據,發+++後返回命令態(注意+++的前後0.5秒內必須無數據傳輸才能返回
命令態),ATO可返回數據態.ATH可結束本次CSD連接.

❺ 關於QT編程TCP通訊 用write傳輸數據的問題

個人認為可能是qPrintable轉換後的數據為const指針吧,建議直接用
toLocal8Bit 試試吧 我覺得是參數強制轉換的問題 很樂意和你一起探討這個問題

❻ 用TCP傳送512位元組的數據。設窗口為100位元組,而TCP報文段每次也是傳送100位元組數據。

1、作好編程准備,包括後面要用的頭文件,以及一些變數的定義。

注意事項:

TCP旨在適應支持多網路應用的分層協議層次結構。 連接到不同但互連的計算機通信網路的主計算機中的成對進程之間依靠TCP提供可靠的通信服務。

❼ 控制台程序如何進行網路編程

-- win API socket
本文所談到的Socket函數如果沒有特別說明,都是指的Windows Socket API。

一、WSAStartup函數
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
使用Socket的程序在使用Socket之前必須調用WSAStartup函數。該函數的第一個參數指明程序請求使用的Socket版本,其中高位位元組指明副版本、低位位元組指明主版本;操作系統利用第二個參數返回請求的Socket的版本信息。當一個應用程序調用WSAStartup函數時,操作系統根據請求的Socket版本來搜索相應的Socket庫,然後綁定找到的Socket庫到該應用程序中。以後應用程序就可以調用所請求的Socket庫中的其它Socket函數了。該函數執行成功後返回0。
例:假如一個程序要使用2.1版本的Socket,那麼程序代碼如下
wVersionRequested = MAKEWORD( 2, 1 );
err = WSAStartup( wVersionRequested, &wsaData );

二、WSACleanup函數
int WSACleanup (void);
應用程序在完成對請求的Socket庫的使用後,要調用WSACleanup函數來解除與Socket庫的綁定並且釋放Socket庫所佔用的系統資源。

三、socket函數
SOCKET socket(
int af,
int type,
int protocol
);
應用程序調用socket函數來創建一個能夠進行網路通信的套接字。第一個參數指定應用程序使用的通信協議的協議族,對於TCP/IP協議族,該參數置PF_INET;第二個參數指定要創建的套接字類型,流套接字類型為SOCK_STREAM、數據報套接字類型為SOCK_DGRAM;第三個參數指定應用程序所使用的通信協議。該函數如果調用成功就返回新創建的套接字的描述符,如果失敗就返回INVALID_SOCKET。套接字描述符是一個整數類型的值。每個進程的進程空間里都有一個套接字描述符表,該表中存放著套接字描述符和套接字數據結構的對應關系。該表中有一個欄位存放新創建的套接字的描述符,另一個欄位存放套接字數據結構的地址,因此根據套接字描述符就可以找到其對應的套接字數據結構。每個進程在自己的進程空間里都有一個套接字描述符表但是套接字數據結構都是在操作系統的內核緩沖里。下面是一個創建流套接字的例子:
struct protoent *ppe;
ppe=getprotobyname("tcp");
SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);

四、closesocket函數
int closesocket(
SOCKET s
);
closesocket函數用來關閉一個描述符為s套接字。由於每個進程中都有一個套接字描述符表,表中的每個套接字描述符都對應了一個位於操作系統緩沖區中的套接字數據結構,因此有可能有幾個套接字描述符指向同一個套接字數據結構。套接字數據結構中專門有一個欄位存放該結構的被引用次數,即有多少個套接字描述符指向該結構。當調用closesocket函數時,操作系統先檢查套接字數據結構中的該欄位的值,如果為1,就表明只有一個套接字描述符指向它,因此操作系統就先把s在套接字描述符表中對應的那條表項清除,並且釋放s對應的套接字數據結構;如果該欄位大於1,那麼操作系統僅僅清除s在套接字描述符表中的對應表項,並且把s對應的套接字數據結構的引用次數減1。
closesocket函數如果執行成功就返回0,否則返回SOCKET_ERROR。

五、send函數
int send(
SOCKET s,
const char FAR *buf,
int len,
int flags
);
不論是客戶還是伺服器應用程序都用send函數來向TCP連接的另一端發送數據。客戶程序一般用send函數向伺服器發送請求,而伺服器則通常用send函數來向客戶程序發送應答。該函數的第一個參數指定發送端套接字描述符;第二個參數指明一個存放應用程序要發送數據的緩沖區;第三個參數指明實際要發送的數據的位元組數;第四個參數一般置0。這里只描述同步Socket的send函數的執行流程。當調用該函數時,send先比較待發送數據的長度len和套接字s的發送緩沖區的長度,如果len大於s的發送緩沖區的長度,該函數返回SOCKET_ERROR;如果len小於或者等於s的發送緩沖區的長度,那麼send先檢查協議是否正在發送s的發送緩沖中的數據,如果是就等待協議把數據發送完,如果協議還沒有開始發送s的發送緩沖中的數據或者s的發送緩沖中沒有數據,那麼send就比較s的發送緩沖區的剩餘空間和len,如果len大於剩餘空間大小send就一直等待協議把s的發送緩沖中的數據發送完,如果len小於剩餘空間大小send就僅僅把buf中的數據到剩餘空間里(注意並不是send把s的發送緩沖中的數據傳到連接的另一端的,而是協議傳的,send僅僅是把buf中的數據到s的發送緩沖區的剩餘空間里)。如果send函數數據成功,就返回實際的位元組數,如果send在數據時出現錯誤,那麼send就返回SOCKET_ERROR;如果send在等待協議傳送數據時網路斷開的話,那麼send函數也返回SOCKET_ERROR。要注意send函數把buf中的數據成功到s的發送緩沖的剩餘空間里後它就返回了,但是此時這些數據並不一定馬上被傳到連接的另一端。如果協議在後續的傳送過程中出現網路錯誤的話,那麼下一個Socket函數就會返回SOCKET_ERROR。(每一個除send外的Socket函數在執行的最開始總要先等待套接字的發送緩沖中的數據被協議傳送完畢才能繼續,如果在等待時出現網路錯誤,那麼該Socket函數就返回SOCKET_ERROR)
注意:在Unix系統下,如果send在等待協議傳送數據時網路斷開的話,調用send的進程會接收到一個SIGPIPE信號,進程對該信號的默認處理是進程終止。

六、recv函數
int recv(
SOCKET s,
char FAR *buf,
int len,
int flags
);
不論是客戶還是伺服器應用程序都用recv函數從TCP連接的另一端接收數據。該函數的第一個參數指定接收端套接字描述符;第二個參數指明一個緩沖區,該緩沖區用來存放recv函數接收到的數據;第三個參數指明buf的長度;第四個參數一般置0。這里只描述同步Socket的recv函數的執行流程。當應用程序調用recv函數時,recv先等待s的發送緩沖中的數據被協議傳送完畢,如果協議在傳送s的發送緩沖中的數據時出現網路錯誤,那麼recv函數返回SOCKET_ERROR,如果s的發送緩沖中沒有數據或者數據被協議成功發送完畢後,recv先檢查套接字s的接收緩沖區,如果s接收緩沖區中沒有數據或者協議正在接收數據,那麼recv就一直等待,只到協議把數據接收完畢。當協議把數據接收完畢,recv函數就把s的接收緩沖中的數據到buf中(注意協議接收到的數據可能大於buf的長度,所以在這種情況下要調用幾次recv函數才能把s的接收緩沖中的數據完。recv函數僅僅是數據,真正的接收數據是協議來完成的),recv函數返回其實際的位元組數。如果recv在時出錯,那麼它返回SOCKET_ERROR;如果recv函數在等待協議接收數據時網路中斷了,那麼它返回0。
注意:在Unix系統下,如果recv函數在等待協議接收數據時網路斷開了,那麼調用recv的進程會接收到一個SIGPIPE信號,進程對該信號的默認處理是進程終止。

七、bind函數
int bind(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
);
當創建了一個Socket以後,套接字數據結構中有一個默認的IP地址和默認的埠號。一個服務程序必須調用bind函數來給其綁定一個IP地址和一個特定的埠號。客戶程序一般不必調用bind函數來為其Socket綁定IP地址和斷口號。該函數的第一個參數指定待綁定的Socket描述符;第二個參數指定一個sockaddr結構,該結構是這樣定義的:
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
sa_family指定地址族,對於TCP/IP協議族的套接字,給其置AF_INET。當對TCP/IP協議族的套接字進行綁定時,我們通常使用另一個地址結構:
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
其中sin_family置AF_INET;sin_port指明埠號;sin_addr結構體中只有一個唯一的欄位s_addr,表示IP地址,該欄位是一個整數,一般用函數inet_addr()把字元串形式的IP地址轉換成unsigned long型的整數值後再置給s_addr。有的伺服器是多宿主機,至少有兩個網卡,那麼運行在這樣的伺服器上的服務程序在為其Socket綁定IP地址時可以把htonl(INADDR_ANY)置給s_addr,這樣做的好處是不論哪個網段上的客戶程序都能與該服務程序通信;如果只給運行在多宿主機上的服務程序的Socket綁定一個固定的IP地址,那麼就只有與該IP地址處於同一個網段上的客戶程序才能與該服務程序通信。我們用0來填充sin_zero數組,目的是讓sockaddr_in結構的大小與sockaddr結構的大小一致。下面是一個bind函數調用的例子:
struct sockaddr_in saddr;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(8888);
saddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr));

八、listen函數
int listen( SOCKET s, int backlog );
服務程序可以調用listen函數使其流套接字s處於監聽狀態。處於監聽狀態的流套接字s將維護一個客戶連接請求隊列,該隊列最多容納backlog個客戶連接請求。假如該函數執行成功,則返回0;如果執行失敗,則返回SOCKET_ERROR。

九、accept函數
SOCKET accept(
SOCKET s,
struct sockaddr FAR *addr,
int FAR *addrlen
);
服務程序調用accept函數從處於監聽狀態的流套接字s的客戶連接請求隊列中取出排在最前的一個客戶請求,並且創建一個新的套接字來與客戶套接字創建連接通道,如果連接成功,就返回新創建的套接字的描述符,以後與客戶套接字交換數據的是新創建的套接字;如果失敗就返回INVALID_SOCKET。該函數的第一個參數指定處於監聽狀態的流套接字;操作系統利用第二個參數來返回新創建的套接字的地址結構;操作系統利用第三個參數來返回新創建的套接字的地址結構的長度。下面是一個調用accept的例子:
struct sockaddr_in ServerSocketAddr;
int addrlen;
addrlen=sizeof(ServerSocketAddr);
ServerSocket=accept(ListenSocket,(struct sockaddr *)&ServerSocketAddr,&addrlen);

十、connect函數
int connect(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
);
客戶程序調用connect函數來使客戶Socket s與監聽於name所指定的計算機的特定埠上的服務Socket進行連接。如果連接成功,connect返回0;如果失敗則返回SOCKET_ERROR。下面是一個例子:
struct sockaddr_in daddr;
memset((void *)&daddr,0,sizeof(daddr));
daddr.sin_family=AF_INET;
daddr.sin_port=htons(8888);
daddr.sin_addr.s_addr=inet_addr("133.197.22.4");
connect(ClientSocket,(struct sockaddr *)&daddr,sizeof(daddr));

❽ c語言寫一個程序,完成功能如下: 1:實現從控制台多次輸入數據,可以

輸入單個字元的

FILE*fp;
intc;
while(1)
{
c=getchar();
if(c==EOF)break;
fp=fopen("out.txt","w");
fprintf(fp,"%c",c);
fclose(fp);
}

新版被推薦後無法追答,請勿追問

❾ java控制台 我怎麼實現一個程序運行多個控制台, 實現從不同的控制台輸入輸出數據

你這個就好像累死於一個伺服器與N個客戶端的樣子,比如QQ和QQ伺服器,這種模式寫一個服務端程序,然後再寫一個客戶端程序,客戶端與服務端通過TCP或者UDP或者其他協議進行通信

閱讀全文

與tcp編程式控制制台輸入數據相關的資料

熱點內容
閩政通無法請求伺服器是什麼 瀏覽:48
怎麼做積木解壓神器 瀏覽:203
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:868
程序員編迷你世界代碼 瀏覽:895
php取現在時間 瀏覽:246
單片機高吸收 瀏覽:427
怎麼區分五代頭是不是加密噴頭 瀏覽:244
hunt測試伺服器是什麼意思 瀏覽:510
2013程序員考試 瀏覽:641
畢業論文是pdf 瀏覽:736
伺服器跑網心雲劃算嗎 瀏覽:471
單片機定時器計數初值的計算公式 瀏覽:801
win7控制台命令 瀏覽:567
貓咪成年app怎麼升級 瀏覽:692
360有沒有加密軟體 瀏覽:315
清除cisco交換機配置命令 瀏覽:751
華為刪除交換機配置命令 瀏覽:473
shell打包命令 瀏覽:827
加密狗插上輸不了密碼 瀏覽:187