socket請求怎麼寫
//啓動一個線程監聽
System.Threading.Thread thread = new Thread(new ThreadStart(BeginListen));
thread.Start();
public void BeginListen()
{
//循環監聽
while(true)
{
Socket sckClient = s.Accept();
}
}
2.socket怎麼樣實現Socket就是套接字它是網絡編程中最常用遇到概念和工具在TCP/IP網絡中傳送和接收數據就會經常使用到Socket由於使用Socket能夠在網絡上處理複雜數據所以在各種網絡應用中涉及到數據傳送和接收般都會使用Socket可見要掌握網絡編程精通Socket是非常重要由於Socket本身複雜性決定了掌握它是比較困難Visual C#是微軟公司推薦開發.Net平臺應用主要語言隨着.Net深入人心目前很多有遠見公司都把以前軟件Software轉向了.Net平臺掌握網絡編程始終是學習種開發語言重點這點對於Visual C#也同樣如此Visual C#實現網絡功能.
幫助網
3.如何編寫socket套接字Socket套接字相當於網絡通信兩端的插座,只要對方的Socket和自己的Socket有通信聯接,雙方就可以發送和接收數據。其定義類似於檔案句柄的定義。
如果編寫的是服務程序,那麼先調用socket()創建一個套接字,調用bind()綁定IP位址和端口,然後啓動一個死循環,循環中調用accept()接受連接。對於每個接受的連接,可以啓動多線程方式進行處理,在線程中調用send()、recv()發送和接收數據。
如果編寫的是客戶端程序,則先調用socket()創建一個套接字,然後調用connect()連接服務器,之後就是調用send()、recv()發送和接收數據了。
服務端程序編寫:
1、調用ServerSocket(int port)創建一個服務器端套接字,並綁定到指定端口上。
2、調用accept(),監聽連接請求,接收連接,返回通信套接字。
3、調用Socket類的getOutStream()和getInputStream獲取輸出和輸入流,開始網絡數據的發送和接收。
4、關閉通信套接字.Socket.close()。
客戶端程序編寫:
1、調用Socket()創建一個流套接字,並連接到服務器端。
2、調用Socket類的getOutputStream()和fetInputStream()獲取輸出流和輸入流,開始網絡數據的發送和接收。
3、關閉通信套接字.Socket.close()。
4.怎樣用 socket 寫一段程序 要求:可以實現在一臺機器上操作,然後另1、首先要有服務器程序和客戶端程序的概念,客戶端程序連接到服務器程序監聽的端口,請求數據通訊
2、自己擬定一些通訊協議
比如,一個命令包包括(包頭(2字節或4字節) 包內容(若干字節))
用2字節的包頭表示整個包的長度,保證包的完整性
比如包都得2字節能表示的長度最大是65536字節,假設包頭爲short類型 值爲 10
表示這個指令整個包長度是12字節,爲完整包
那麼第三個字節可以作爲主協議使用,第四個字節可以作爲子協議,後面8個字節可以作爲這個主協議和子協議帶入的參數
只是舉一個簡單的例子
5.如何編寫一個利用Socket通信的程序設計思路 本例包括一個服務器端程序和一個客戶端程序。
客戶端程序可以放到多個計算機上執行,同時與服務器端進行連接通信。 本例的重點,一是演示客戶端與服務器端如何通信;二是當有多個客戶端同時連接到服務器端時,服務器端如何識別每個客戶端,並對請求給出相應的回覆。
爲了保證一個客戶端斷開連接時不影響其它客戶端與服務器端的通信,同時保證服務器端能夠正確回覆客戶端的請求,在本例中聲明瞭一個記錄類型:type client_record=record CHandle: integer; //客戶端套接字句柄 CSocket:TCustomWinSocket; //客戶端套接字 CName:string; //客戶端計算機名稱 CAddress:string; //客戶端計算機IP位址 CUsed: boolean; //客戶端聯機標誌end; 利用這個記錄類型數據儲存客戶端的資訊,同時儲存當前客戶端的連接狀態。其中,CHandle儲存客戶端套接字句柄,以便準確定位每個與服務器端保持連接的客戶端;Csocket儲存客戶端套接字,透過它可以對客戶端進行回覆。
Cused記錄當前客戶端是否與服務器端保持連接。 下面對組件ServerSocket和ClientSocket的屬性設定簡單說明。
ServerSocket的屬性: · Port,是通信的端口,必須設定。在本例中設定爲1025; · ServerTypt,服務器端讀寫資訊類型,設定爲stNonBlocking表示異步讀寫資訊,本例中採用這種方式。
· ThreadCacheSize,客戶端的最大連接數,就是服務器端最多允許多少客戶端同時連接。本例採用默認值10。
其它屬性採用默認設定即可。 ClientSocket的屬性: · Port,是通信的端口,必須與服務器端的設定相同。
在本例中設定爲1025; · ClientType,客戶端讀寫資訊類型,應該與服務器端的設定相同,爲stNonBlocking表示異步讀寫資訊。 · Host,客戶端要連接的服務器的IP位址。
必須設定,當然也可以在代碼中動態設定。 其它屬性採用默認設定即可。
程序原始碼: · 服務器端源碼(uServerMain.pas):unit uServerMain;interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, ToolWin, ComCtrls, ExtCtrls, StdCtrls, Buttons; const CMax=10; //客戶端最大連接數 type client_record=record CHandle: integer; //客戶端套接字句柄 CSocket:TCustomWinSocket; //客戶端套接字 CName:string; //客戶端計算機名稱 CAddress:string; //客戶端計算機IP位址 CUsed: boolean; //客戶端聯機標誌 end; type TfrmServerMain = class(TForm) ServerSocket: TServerSocket; ControlBar1: TControlBar; ToolBar1: TToolBar; tbConnect: TToolButton; tbClose: TToolButton; tbDisconnected: TToolButton; Edit1: TEdit; Memo1: TMemo; StatusBar: TStatusBar; procedure tbConnectClick(Sender: TObject); procedure tbDisconnectedClick(Sender: TObject); procedure (Sender: TObject;Socket: TCustomWinSocket); procedure ServerSocketListen(Sender: TObject;Socket: TCustomWinSocket); procedure (Sender: TObject;Socket: TCustomWinSocket); procedure (Sender: TObject;Socket: TCustomWinSocket); procedure tbCloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ServerSocketGetSocket(Sender: TObject; Socket: Integer; var ClientSocket: ); procedure (Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); private { Private declarations } public { Public declarations } session: array[0..CMax] of client_record; //客戶端連接數組 Sessions: integer; //客戶端連接數 end; var frmServerMain: TfrmServerMain; implementation {$R *.DFM} //開啟套接字連接,並使套接字進入監聽狀態 procedure TfrmServerMain.tbConnectClick(Sender: TObject); begin ServerSocket.Open ; end; //關閉套接字連接,不再監聽客戶端的請求 procedure TfrmServerMain.tbDisconnectedClick(Sender: TObject); begin ServerSocket.Close; StatusBar.Panels[0].Text :='服務器套接字連接已經關閉,無法接受客戶端的連接請求.'; end; //從客戶端讀取資訊 procedure TfrmServerMain.(Sender: TObject;Socket: TCustomWinSocket); var i:integer; begin //將從客戶端讀取的資訊添加到Memo1中 Memo1.Lines.Add(Socket.ReceiveText); for i:=0 to sessions do begin //取得匹配的客戶端 if session[i].CHandle = Socket.SocketHandle then begin session[i].CSocket.SendText('回覆客戶端'+session[i].CAddress+' ==> '+Edit1.Text); end; end; end; //服務器端套接字進入監聽狀態,以便監聽客戶端的連接 procedure TfrmServerMain.ServerSocketListen(Sender: TObject;Socket: TCustomWinSocket); begin StatusBar.Panels[0].Text :='等待客戶端連接。'; end; //當客戶端連接到服務器端以後 procedure TfrmServerMain。
6.編寫一個TCP Socket程序我看盜的時候只有21個小時了,不知道是不是還能趕的上拿分!下邊給出DELPHI的原始碼!--------client---------------------------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; IdTCPClient1: TIdTCPClient; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginif idtcpclient1.Connected then idtcpclient1.Disconnect ;tryidtcpclient1.Host :=edit1.Text ;idtcpclient1.Port :=strtoint(edit2.Text );idtcpclient1.Connect;exceptshowmessage('連接失敗');end;idtcpclient1.WriteLn(edit3.Text );edit3.Text :=idtcpclient1.ReadLn; end;procedure TForm1.FormDestroy(Sender: TObject);beginif idtcpclient1.Connected then idtcpclient1.Disconnect ;end;end.----------------------------------------------------------server--------------------------------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer;type TForm1 = class(TForm) IdTCPServer1: TIdTCPServer; Button1: TButton; Edit1: TEdit; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure IdTCPServer1Execute(AThread: TIdPeerThread); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1 : TForm1; i:integer;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin if IdTCPServer1.Active then IdTCPServer1.Active := false; try IdTCPServer1.DefaultPort := strtoint(Edit1.Text); IdTCPServer1.Active := true; except showmessage('啓動失敗'); end;end;procedure TForm1.FormDestroy(Sender: TObject);begin if IdTCPServer1.Active then IdTCPServer1.Active := false;end;procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);var s : string;begin Memo1.Lines.Add(athread.Connection.ReadLn(s) ); ATHREAD.Connection.WriteLn(inttostr(i)); i:=i+1;end;procedure TForm1.FormCreate(Sender: TObject);begin i:=1;end;end.----------------------------------------------winXP +delphi7編譯透過。
7.安卓開發socket開發簡單例子 怎麼寫package scut;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Sock {
/**
* 服務器端
*
* @author Administrator
*
*/
// 程序入口
public static void main(String args[]) {
try {
// 建立一個ServletSocket ,監聽對應的端口,用於監聽客戶端的連接請求
ServerSocket serverSocket = new ServerSocket(40004);
while (true) { // 循環不斷接收客戶端的請求
System.out.println("等待客戶端請求。.");
Socket socket = serverSocket.accept();
// 等待接收
System.out.println("收到請求,服務器建立連接。");
// 返回數據
OutputStream os = socket.getOutputStream();
String msg = "服務器已連接成功。";
os.write(msg.getBytes("utf-8"));
os.close();
socket.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
8.socket編程怎麼寫一個客戶端和兩個服務端網絡的Socket數據傳輸是一種特殊的I/O,Socket也是一種檔案描述符。
Socket也具有一個類似於開啟檔案的函數調用Socket(),該函數返回一個整型的Socket描述符,隨後的連接建立、數據傳輸等操作都是透過該Socket實現的。下面用Socket實現一個windows下的c語言socket通信例子,這裏我們客戶端傳遞一個字元串,服務器端進行接收。
【服務器端】#include "stdafx.h"#include
}// closesocket(sListen);// closesocket(sServer);// WSACleanup(); } 【客戶端】#include "stdafx.h"#include
SERVER端:--------------------------------------------------------import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server extends Thread { private Socket clientSocket; public Server(Socket clientSocket) { this.clientSocket = clientSocket; } public void run() { DataInputStream dis = null; DataOutputStream dos = null; try { dis = new DataInputStream(clientSocket.getInputStream()); dos = new DataOutputStream(clientSocket.getOutputStream()); while (true) { String temp = dis.readUTF(); if ("over".equals(temp)) { break; } dos.writeUTF("from server:" + temp); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (dis != null) { dis.close(); } if (dis != null) { dos.close(); } if (clientSocket != null) { clientSocket.close(); } } catch (IOException e) { } } } public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8008); while (true) { Socket clientSocket = ss.accept(); // 針對每個客戶端, 啓一個Server線程專門處理此客戶端的請求。
Server server = new Server(clientSocket); server.start(); } }}CLIENT端:----------------------------------------import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.InputStreamReader;import java.net.Socket;public class Client { public static void main(String[] args) throws Exception { // 輸入流1, 從鍵盤進入Client。 InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); Socket clientSocket = new Socket("127.0.0.1", 8008); // 輸入流2, 從服務器端進入Client的流對象。
DataInputStream dis = new DataInputStream(clientSocket.getInputStream()); // 輸出流, 從Client出去, 到服務器端。 DataOutputStream dos = new DataOutputStream(clientSocket.getOutputStream()); while (true) { // 從鍵盤輸入讀取 String msg = br.readLine(); // 將讀取資訊發送給服務器端 dos.writeUTF(msg); //輸入QUIT退出 if ("QUIT".equals(msg)) { break; } //讀取從服務器返回的資訊 String temp = dis.readUTF(); System.out.println(temp); } br.close(); dis.close(); dos.close(); clientSocket.close(); }}。
-
醉酒駕駛需要拘留多久??
醉酒駕駛需要拘留多久??醉酒駕駛需要拘留多久?醉酒駕駛機動車的,已經構成危險駕駛罪,依法應處拘役並處罰金。根據《刑事訴訟法》的規定,對於涉嫌危險駕駛罪的犯罪嫌疑人的刑事拘留時間一般應爲十四日,如果在此期間被取保候審的,則可以暫時被釋放;如果沒有取保候審的,在拘...
-
舊傢俱怎樣變新
舊傢俱的更新主要有以下幾種情況:①作局部的修改加工,改變其使用功能。②改換貼面材料或油飾見新。③使用各類裝飾織物,掩蓋不足。其中以油漆的方式更新傢俱,增加其美觀的作法使用最多。將原有油漆從傢俱上清除的方法有三種。砂紙擦和熱脫的方法可清除普通油漆。...
-
很裝的語錄
其實你我都一樣,人人都在裝,關鍵是要裝像了,裝圓了,有一個門檻,裝成了就邁進去,成爲傳說中的性情中人,沒裝好,就卡在那裏了。就是卡門。葉昊,我現在就想跟你說三個字,草泥馬,如果非要加個期限的話,我希望是一萬頭……有很多的時候,想對自己說,不裝強大會死嗎?卻又笑了!天上的星...
-
集資詐騙罪最高可以判多少年?
集資詐騙罪判刑根據情節嚴重程度而定,包括數額大小和其他嚴重情節。犯罪者可被判5年以下有期徒刑、2-20萬元罰金;情節嚴重者可判5-10年有期徒刑、5-50萬元罰金;情節特別嚴重者可判10年以上有期徒刑、5-50萬元罰金或沒收財產;數額特別巨大且嚴重損害國家和人民利益...