導航:首頁 > 編程語言 > socket編程試題

socket編程試題

發布時間:2024-09-20 08:23:06

『壹』 C# SOCKET網路編程

1. 把 lisThd.ApartmentState = ApartmentState.STA; 注釋掉,ApartmentState 已過時。2. 如果使用TCP協議,建議你使用 TcpListener 類和 TcpClient 類,更加方便。以下是一個示例以下示例說明如何設置 TcpClient 以連接到 TCP 埠 13 上的時間伺服器。
using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeClient {
private const int portNum = 13;
private const string hostName = "host.contoso.com"; public static int Main(String[] args) {
try {
TcpClient client = new TcpClient(hostName, portNum); NetworkStream ns = client.GetStream();

byte[] bytes = new byte[1024];
int bytesRead = ns.Read(bytes, 0, bytes.Length); Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead)); client.Close(); } catch (Exception e) {
Console.WriteLine(e.ToString());
} return 0;
}
}
TcpListener 用於監視 TCP 埠上的傳入請求,然後創建一個 Socket 或 TcpClient 來管理與客戶端的連接。Start 方法啟用偵聽,而 Stop 方法禁用埠上的偵聽。AcceptTcpClient 方法接受傳入的連接請求並創建 TcpClient 以處理請求,AcceptSocket 方法接受傳入的連接請求並創建 Socket 以處理請求。以下示例說明如何使用 TcpListener 創建網路時間伺服器以監視 TCP 埠 13。當接受傳入的連接請求時,時間伺服器用來自宿主伺服器的當前日期和時間進行響應。using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeServer { private const int portNum = 13; public static int Main(String[] args) {
bool done = false;

TcpListener listener = new TcpListener(portNum); listener.Start(); while (!done) {
Console.Write("Waiting for connection...");
TcpClient client = listener.AcceptTcpClient();

Console.WriteLine("Connection accepted.");
NetworkStream ns = client.GetStream(); byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); try {
ns.Write(byteTime, 0, byteTime.Length);
ns.Close();
client.Close();
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
} listener.Stop(); return 0;
}

}

『貳』 socket介面網路編程

面向無連接的端對端通信
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失敗
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
return -1;//創建套接字失敗
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//綁定套接字失敗
}
int nServAddrlen=sizeof(servAddr);
ZeroMemory(buf,sizeof(buf));
if(recvfrom(s,buf,size(buf),0,(SOCKADDR*)&servAddr,nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//接收數據失敗
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
SOCKADDR_IN clientAddr;
clientAddr.sin_family=AF_INET;
clientAddr.sin_addr.s_addr=inet_addr(%%4);
clientAddr.sin_port=htons((short)%%5);
int nClientlen=size(clientAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//向伺服器發送數據失敗
}
closesocket(s);
WSACleanup();

『叄』 C++網路編程(socket)我要寫一個伺服器端程序和一個客戶端程序

可以啊,解決方案上右鍵,添加項目,不過沒這個必要啊,因為你又不能只開一個VS來同時調試兩個項目。
設成啟動項目後可以按F5進行調試運行,或者CTRL+F5進行不調試運行,不過最後還是只能調試一個項目

『肆』 總結最全面的TCP、UDP、Socket、HTTP網路編程面試題

第一場:

第二場: 心裡憋了一萬個草泥馬來到的第二家

接著進入正題,網路編程的核心問題:什麼是網路編程,網路編程中的兩個主要問題,網路協議是什麼,為什麼要對網路協議分層,計算機網路體系結構,OSI參考模型,TCP/IP參考模型,TCP/IP四層協議(數據鏈路層、網路層、傳輸層、應用層)。

1 TCP/UDP

1.1 什麼是TCP/IP和UDP

1.2 TCP與UDP區別

1.3 TCP和UDP的應用場景

1.4 形容一下TCP和UDP

1.5 運行在TCP或UDP的應用層協議分析

1.6 TCP的三次握手

1.6.1 什麼是TCP的三次握手

1.6.2 三次握手的具體細節

1.6.3 用現實理解三次握手的具體細節

1.6.4 建立連接可以兩次握手嗎?為什麼?

1.6.5 可以採用四次握手嗎?為什麼?

1.6.6 第三次握手中,如果客戶端的ACK未送達伺服器,會怎樣?

1.6.7 如果已經建立了連接,但客戶端出現了故障怎麼辦?

1.6.8 初始序列號是什麼?

1.7 TCP的四次揮手

1.7.1 什麼是TCP的四次揮手

1.7.2 四次揮手的具體細節

1.7.3 用現實理解三次握手的具體細節TCP的四次揮手

1.7.4 為什麼不能把伺服器發送的ACK和FIN合並起來,變成三次揮手(CLOSE_WAIT狀態意義是什麼)?

1.7.5 如果第二次揮手時伺服器的ACK沒有送達客戶端,會怎樣?

1.7.6 客戶端TIME_WAIT狀態的意義是什麼?

2 Socket

2.1 什麼是Socket

2.2 socket屬於網路的那個層面

2.3 Socket通訊的過程

2.4 Socket的常用類

3 HTTP

3.1 什麼是Http協議?Socket和http的區別和應用場景

3.2 什麼是http的請求體?POST請求,GIT請求是沒有請求體的

3.3 http的響應報文有哪些?http和https的區別?HTTPS工作原理

3.4 一次完整的HTTP請求所經歷幾個步驟?

3.5 常用HTTP狀態碼是怎麼分類的,有哪些常見的狀態碼?

3.6 Http協議中有那些請求方式,GET方法與POST方法的區別

3.7 http版本的對比,HTTP1.0版本的特性,HTTP1.1版本新特性,HTTP2.0版本的特性

3.8 什麼是對稱加密與非對稱加密,cookie和session對於HTTP有什麼用?什麼是cookie,什麼是session,cookie與session區別

『伍』 java socket網路編程

//==============Server.java=================//
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(12345);
System.out.println("伺服器就緒,請啟動客戶端.");
Socket so = s.accept();
byte[] buff = new byte[1024];
int read = so.getInputStream().read(buff);
String[] abc=new String(buff,0,read).split("\\D+");
int a = Integer.parseInt(abc[0]);
int b = Integer.parseInt(abc[1]);
int c = Integer.parseInt(abc[2]);
if(!cbt(a,b,c))
so.getOutputStream().write("輸入的數據無法組成三角形.".getBytes());
else
so.getOutputStream().write(getArea(a,b,c).getBytes());
so.getOutputStream().flush();
so.close();
s.close();
}

private static String getArea(int a, int b, int c) {
float s = (a+b+c)/2f;
return "面積: "+Math.sqrt(s*(s-a)*(s-b)*(s-c));
}

private static boolean cbt(int a, int b, int c) {
return a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b;
}
}

//=================Client.java======================//
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("輸入三角形的三邊並用逗號隔開,如: (3,4,5) ");
byte[] buff=new byte[64];
int r = System.in.read(buff);
String ipaddr = "localhost";//根據情況改變,在本機調試就不改了
Socket so = new Socket(ipaddr,12345);
so.getOutputStream().write(new String(buff,0,r).getBytes());
r = so.getInputStream().read(buff);
so.close();
String rs = new String(buff,0,r);
System.out.println(rs);
}

}

//先啟動Server,再啟動Client

『陸』 VC中使用API編寫的socket程序中如何設置阻塞和非阻塞accept,recv

關於阻塞和非阻塞概念,可能有些初學編程的人不是很清楚. 阻塞是指在函數執行時如果條件不滿足,程序將永遠停在那條函數那裡不在往下執行,而非阻塞則是函數不管條件是否滿足都會往下執行.例如在通訊過程中,當接收數據的時候,對於阻塞方式,程序將一直等到接收到數據才向下執行,而對於非阻塞方式,不管是否接收到數據,接收函數將被執行過去.一個比較完善的程序一般來講都使用非阻塞的方式來進行.原因在於如果採用阻塞方式,程序將停在那裡一直等待條件滿足,正常情況下是沒有問題的,但如果你想停止阻塞的程序,就出現了比較麻煩的問題. 對於VC中使用API方式進行的SOCKET編程,需要使用下面的函數來設置阻塞方式和非阻塞方式: ioctlsocket(gListenSocket, FIONBIO,&tBlockMode); //tBlockMode 0--block,1--no block ioctlsocket(gWorkSocket, FIONBIO,&tBlockMode); 注意,在開發server端程序時,這樣設置會控制監聽socket的accept()函數的阻塞和非阻塞模式,也可以設置工作socket的recv函數的阻塞和非阻塞模式.設置了非阻塞模式,可以使用查詢方式進行accept和recv函數執行.

閱讀全文

與socket編程試題相關的資料

熱點內容
單片機中ramrom是什麼顏色 瀏覽:38
dev編譯完不顯示控制台窗口 瀏覽:592
程序員自學有希望嗎 瀏覽:528
解壓助眠外國 瀏覽:1000
python帶格式讀取word 瀏覽:153
php開發人員簡歷模板 瀏覽:575
韓國都用什麼社交app 瀏覽:264
視頻伺服器端開發要掌握什麼知識 瀏覽:294
鈔票在手機屏幕上動是什麼app 瀏覽:22
C證App有什麼用 瀏覽:816
無錫專業cam編程培訓價格 瀏覽:527
用什麼app查企業是免費的 瀏覽:866
如何改變本地搭建的web伺服器的ip 瀏覽:318
主要單片機 瀏覽:745
腳本編程培訓 瀏覽:766
狐狸的夏天什麼app免費 瀏覽:494
什麼傳輸軟體可以蘋果安卓互傳 瀏覽:159
高數極限運演算法則怎麼使用 瀏覽:268
遠程桌面要加密傳輸 瀏覽:46
dll改名編譯器不報錯 瀏覽:131