導航:首頁 > 編程語言 > 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編程試題相關的資料

熱點內容
工作三年的大專程序員 瀏覽:726
java畢業設計文獻 瀏覽:140
籌碼集中度指標源碼 瀏覽:478
listsortjava 瀏覽:183
plc閃光電路編程實例 瀏覽:299
socket編程試題 瀏覽:204
華為的伺服器怎麼設置從光碟機啟動 瀏覽:868
程序員真的累嗎 瀏覽:325
學信網app為什麼刷臉不了 瀏覽:873
天蠍vs程序員 瀏覽:992
單片機下載口叫什麼 瀏覽:188
程序員的道 瀏覽:926
雲伺服器不實名違法嗎 瀏覽:558
怎樣查看文件夾圖片是否重復 瀏覽:995
文件怎麼導成pdf文件 瀏覽:808
打開sql表的命令 瀏覽:103
安卓手機如何面部支付 瀏覽:38
天元數學app為什麼登錄不上去 瀏覽:824
明日之後為什麼有些伺服器是四個字 瀏覽:104
安卓系統l1是什麼意思 瀏覽:26