網路編程客戶端
大多數連接都是可靠的TCP連接。創建TCP連接時,主動發起連接的叫客戶端,被動響應連接的叫伺服器。
舉個例子,當我們在瀏覽器中訪問新浪時,我們自己的計算機就是客戶端,瀏覽器會主動向新浪的伺服器發起連接。如果一切順利,新浪的伺服器接受了我們的連接,一個TCP連接就建立起來的,後面的通信就是發送網頁內容了。
所以,我們要創建一個基於TCP連接的Socket,可以這樣做:
# 導入socket庫:
import socket
# 創建一個socket:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立連接:
s.connect(( , 80))
創建Socket時,AF_INET指定使用IPv4協議,如果要用更先進的IPv6,就指定為AF_INET6。SOCK_STREAM指定使用面向流的TCP協議,這樣,一個Socket對象就創建成功,但是還沒有建立連
2. java 網路編程: 如何實現客戶端與客戶端之間的之間通信
伺服器告知雙方對方的ip地址,並協調由哪一方主動連接。
如 協調結果是: 把c2的地址告訴c1,讓c1主動連接c2,讓c2打開埠等待連接。
要考慮認證問題,比如c2如何知道連接上來的是c1,而不是其他人,就需要有認證機制。
另外要考慮內網問題。由於從外部連接內網裡面的IP地址是相當繁瑣復雜的,所以需要特別的機制處理。
3. c++網路編程的伺服器和客戶端是怎麼回事
伺服器就是一個程序,時刻准備接收網路上其他計算機(或本機)上的某些程序發出的指令(字元串),然後按照指令完成某些工作。例如,你做了一個程序,准備接收字元串(sell,001A,5,3),這個串表示:銷售001A編號的商品,單價5元,賣了3個,然後把這個信息以某種格式存入文件,以便以後作為統計依據。那麼給這個伺服器發串的大概就是一個收銀台的pos機,上面運行著圖形界面,在收款員的確定按鈕按下時,發出了這筆交易串。這個pos機運行的就是客戶端程序。
伺服器程序需要時刻運行,時刻准備接收各種類型請求並處理。客戶端程序隨便一些,隨時運行一次也可以。
如果客戶端非常多時,伺服器程序就忙不過來了,就需要進程池、線程池等排隊演算法緩解壓力,也可以把各個請求以某種分類發送給不同伺服器來緩解壓力,總之方法有很多,都是伺服器開發的重點。
4. 基於c語言,網路編程,伺服器接收客戶端1的信息發送給客戶端2
char
buff2[1024*10];
int
receiveLen;
/*調用accept函數,等待客戶端的連接*/
client_fd=accept(sockfd,(struct
sockaddr
*)&client_sockaddr,&sin_size
/*調用recv函數接收客戶端的請求*/
recvbytes=recv(client_fd,buf,BUFFER_SIZE,0)
typedef
int
(WINAPI
ICEPUB_TCPSENDANDRECEIVETEXT)(char
*sendBuff,
int
sendBuffLen,char
*recvBuff,int
recvMaxLen,char*
serverIP,int
serverPort);
ICEPUB_TCPSENDANDRECEIVETEXT
*icePub_tcpSendAndReceiveText
=
0;
HINSTANCE
hDLLDrv
=
LoadLibrary
("icePubDll.dll");
if(hDLLDrv)
{
icePub_tcpSendAndReceiveText=(ICEPUB_TCPSENDANDRECEIVETEXT
*)
GetProcAddress
(hDLLDrv,"icePub_tcpSendAndReceiveText");
}
if(icePub_tcpSendAndReceiveText)
receiveLen=icePub_tcpSendAndReceiveText(buf,recvbytes),buff2,1024*10,"192.168.1.2",8000);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
AfxMessageBox
(buff2);
5. 網路編程模型:客戶端-伺服器
網路應用隨處可見,任何時候瀏覽Web、發送E-mail信息或玩在線 游戲 ,都會使用網路應用程序。有趣的是,所有的網路應用都是基於相同的基本編程模型,有著相似的整體邏輯結構,並且依賴相同的編程介面。
每個網路應用都是基於 客戶端-伺服器 模型的。採用這個模型,一個應用是由一個伺服器進程 和 一個或多個客戶端進程組成。伺服器管理某種資源,並且通過操作這種資源來為它的客戶端提供某種服務。
如一個Web伺服器管理者一組磁碟文件,它會代表客戶端進行存儲和檢索。相似地,一個電子郵件伺服器管理著一些文件,它為客戶端進行讀和更新。
客戶端-伺服器模型中的基本操作是事務(transaction),一個客戶端-伺服器事務由以下四步組成:
需要注意的是,客戶端和伺服器是進程,而不是常提到的機器或主機。一台主機可以同時運行多個不同的客戶端和伺服器,而且一個客戶端和伺服器的事務可以在同一台或不同的主機上。無論客戶端和伺服器是怎樣映射到主機上的,客戶端-伺服器模型都是相同的。
6. java網路編程應該怎樣在客戶端和伺服器間實現通信
以前寫的,照貼了。。。伺服器端:import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.*;/*6、 採用UDP協議,編寫一個Java網路應用程序,該應用分伺服器端程序和客戶端程序兩部分。
* 客戶端指定一個伺服器上的文件名,讓伺服器發回該文件的內容,或者提示文件不存在。
* (20分)(服務端程序和客戶端程序分別命名為Server.java和Client.java)*/
public class N4BT6 extends Frame
{
DatagramSocket socket ;
DatagramPacket packet ;byte[] buf ;
File file ;
FileInputStream input;
String message = "該文件不存在";
TextArea text;
public N4BT6(String title)
{
super(title);
text = new TextArea(6,4);
add(text);
setSize(400, 300);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
buf = new byte[1024];
try
{
socket = new DatagramSocket(1230);
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
file = new File(new String(packet.getData()));
socket = new DatagramSocket();
}
catch (Exception e)
{e.printStackTrace();
}
if(file.exists())
{
try
{
buf = new byte[(int)file.length()];
packet = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234);
input = new FileInputStream(file);
input.read(buf);
socket.send(packet);
}
catch (IOException e)
{
e.printStackTrace();
}
}
else
{
try
{
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1234);
socket.send(packet);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
new N4BT6("Server");
}
}
客戶端:import java.awt.*;
import java.awt.event.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class N4BT6_2 extends Frame
{
TextArea text;
String message = "Q.txt";
DatagramSocket socket ;
DatagramPacket packet;
byte[] buf;
public N4BT6_2(String title)
{
super(title);
text = new TextArea(6,4);
add(text);
setSize(400, 300);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
try
{
socket = new DatagramSocket();
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1230);
socket.send(packet);
}
catch (Exception e)
{
e.printStackTrace();
}
try
{
buf = new byte[1024];
socket = new DatagramSocket(1234);
packet = new DatagramPacket(buf,buf.length);
socket.receive(packet);
text.append(new String(buf));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
new N4BT6_2("Client");
}
}
7. c語言怎樣實現網路編程
1、枝並要實現網路編程,首先得了解網路編程的原理。
大部分網路編程底層都是通過TCP/IP或者UDP協議進行通訊,不管是TCP還是UDP通訊,都是通過調用socket實現的。
Socket是應用層與TCP/IP協議族通信的中間軟體抽象層,它是一組介面。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket介面後面,對用戶來說,一組簡單的介面就是全部,讓Socket去伏搭灶組織數據,以符合指定的協議。
Socket通訊分為兩部分:伺服器端和客戶端,伺服器端監聽客戶端的連接,連接上之後,實現數據通訊,流程
2、用C語言調用Socket實現通訊
伺服器端示例代缺扮碼如下:
#include
#include
#include
#include
#include
#include
#include
#include
#definePORT1500//埠號
#defineBACKLOG5/*最大監聽數*/
intmain(){
intsockfd,new_fd;/*socket句柄和建立連接後的句柄*/
structsockaddr_inmy_addr;/*本方地址信息結構體,下面有具體的屬性賦值*/
structsockaddr_intheir_addr;/*對方地址信息*/
intsin_size;
sockfd=socket(AF_INET,SOCK_STREAM,0);//建立socket
if(sockfd==-1){
printf("socketfailed:%d