導航:首頁 > IDC知識 > socket編程伺服器端

socket編程伺服器端

發布時間:2021-01-26 03:43:59

1、C語言socket編程要怎麼實現伺服器可以發消息給客戶端?

先要理解socket是什麼?
簡單的說socket是一個全雙工的通信通道,
即使用TCP或者UDP通信時均可以在發送消息的同時接受消息,
它不區分是否是伺服器。
根據這個概念你的問題就很好回答。
》當客戶端與伺服器連接後。有什麼方法使伺服器可以隨時隨地發消息給客戶端?
》我現在只能。客戶端發個消息給伺服器。伺服器才能發個消息給客戶端。也就是說客戶端不發消息。伺服器就沒法發消息給客戶端。
》求大牛給個思路。當連接後。客戶端與伺服器雙方可以隨時隨地通信!
使用多線程,一個維持接受邏輯,一個維持送信邏輯,即可完成同時接受及發送。
客戶端及伺服器端均做上述設置。
而你的做法是在一個線程中執行接受與送信,因此只能按照順序邏輯完成接收與送信。
關鍵點是多線程。

2、C語言 socket編程 TFTP伺服器與客戶端的實現

想要抄快速入門socket編程,先找嵌入式linux方面的書籍來看,看關於文件操作部分,然後看基於tcp udp的socket編程實例,拿別人代碼跑一跑,就能理解了,往後想了解更多,可以往tcpip協議方面看也能往Linux網路編程方面看,對於tftp協議,基於udp來設計,只需要看看別人怎麼實現協議的代碼,然後用結構體等數據結構將協議的各個段封裝進去就行

3、Socket編程如何搭建一個外網可以訪問的伺服器

搭建外網訪問,首先你要有一台外網可訪問的伺服器,有以下幾種方法可以實現。
一、購買外網伺服器。由於伺服器端使用JAVA語言開發,所以外網伺服器操作系統可以是Linux或Windows,這個需要你花錢購買。如果只是測試,你可以選擇購買阿里雲的雲伺服器,非常便宜。
二、還有一種方法就是你通過花生殼之類的軟體進行映射你的網路,但花生殼對長城寬頻之類的網路支持不是特別好,如果需要很好的支持,那也需要花錢購買。
三、如果你是通過路由器上網,並且可以操作路由器許可權且使用的是電信或者是聯通的網路,那可以直接在路由器裡面做埠映射,這個你可以百度一下,有很多文章講的非常清楚,這里篇幅限制,就不貼了。
四、如果你是直接通過貓上網且使用電信或聯通寬頻,那可以直接使用本機外網IP訪問你的程序。
以上四種方法中,最穩定的還是購買外網伺服器,其它都會有各種問題,你可以選擇其中適合你的一種方法。希望能幫助到你

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

呵呵,當讓可以了。
1、首先我說一下他們的關系:
一個解決方案(*.sln)中可以包含多個項目(*.vcxproj);
這些項目可以是互不相關的,也可以是相關的;
2、下面說如何將你的兩個項目放在同一個解決方案里
你將一個的項目(B)拷貝到另外一個項目中(A)(其中文件夾A和B中含有*.vcxproj);
你有A.vcxproj和B.vcxproj兩個項目,他們分別為
文件夾A(其中含有A.vcxproj) 和 文件夾B(其中含有B.vcxproj)
解決方案(C.sln)和文件夾A和B在同一目錄下。
然後打開對應的解決方案,添加項目,將剛才的B項目添加即可;
3、設置啟動項目。

5、java socket編程 伺服器端 信息轉發

以前抄寫的,伺服器和客戶端的源代碼:

http://hi.baidu.com/cliff77/blog/item/d819338f0162cae8f11f3660.html

http://hi.baidu.com/cliff77/blog/item/64055262040cbbdbe6113a63.html

6、SOCKET編程實現伺服器端的步驟是什麼?

Java版本
1.編寫伺服器端,實例化ServerSocket對象,這里要定義ip和埠,實例化Socket,從版ServerSocket對象中accept() 獲取,這里要涉及權到流,輸入輸出流在Socket中獲取
2.編寫客戶端,實例化Socket對象,ip,埠,流,在Socket中獲取
如果想要具體代碼,就留言,有空發給你

7、socket編程伺服器端接收數據

//服務端:
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
Thread mythread ;
Socket socket;
// 清理所有正在使用的資源。
protected override void Dispose( bool disposing )
{
 try
 {
socket.Close();//釋放資源
mythread.Abort ( ) ;//中止線程
 }
 catch{ }
 if( disposing )
 {
if (components != null)
{
 components.Dispose();
}
 }
 base.Dispose( disposing );
}
public static IPAddress GetServerIP()
{
 IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());
 return ieh.AddressList[0];
}
private void BeginListen()
{
 IPAddress ServerIp=GetServerIP();
 IPEndPoint iep=new IPEndPoint(ServerIp,8000);
 socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
 byte[] byteMessage=new byte[100];
 this.label1.Text=iep.ToString();
 socket.Bind(iep);
 // do
 while(true)
 {
try
{
 socket.Listen(5);
 Socket newSocket=socket.Accept();
 newSocket.Receive(byteMessage);
 string sTime = DateTime.Now.ToShortTimeString ( ) ;
 string msg=sTime+":"+"Message from:";
 msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);
 this.listBox1.Items.Add(msg);
 }
catch(SocketException ex)
{
 this.label1.Text+=ex.ToString();
}
 } // while(byteMessage!=null);
}
//開始監聽
private void button1_Click(object sender, System.EventArgs e)
{
 try
 {
mythread = new Thread(new ThreadStart(BeginListen));
mythread.Start();
 }
 catch(System.Exception er)
 {
MessageBox.Show(er.Message,"完成",MessageBoxButtons.OK,MessageBoxIcon.Stop);
 }
}
//客戶端:
using System.Net;
using System.Net.Sockets;
using System.Text;
private void button1_Click(object sender, System.EventArgs e)
{
 BeginSend();
}
private void BeginSend()
{
 string ip=this.txtip.Text;
 string port=this.txtport.Text;
 IPAddress serverIp=IPAddress.Parse(ip);
 int serverPort=Convert.ToInt32(port);
 IPEndPoint iep=new IPEndPoint(serverIp,serverPort);
 byte[] byteMessage;
 Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
 socket.Connect(iep);
 byteMessage=Encoding.ASCII.GetBytes(textBox1.Text);
 socket.Send(byteMessage);
 socket.Shutdown(SocketShutdown.Both);
 socket.Close();
}

//基於TCP協議的發送和接收端
//TCP協議的接收端
using System.Net.Sockets ; //使用到TcpListen類
using System.Threading ; //使用到線程
using System.IO ; //使用到StreamReader類

int port = 8000; //定義偵聽埠號
private Thread thThreadRead; //創建線程,用以偵聽埠號,接收信息
private TcpListener tlTcpListen; //偵聽埠號
private bool blistener = true; //設定標示位,判斷偵聽狀態
private NetworkStream nsStream; //創建接收的基本數據流
private StreamReader srRead;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ListBox listBox1; //從網路基礎數據流中讀取數據
private TcpClient tcClient ;
private void Listen ( )
{
 try
 {
tlTcpListen = new TcpListener ( port ) ; //以8000埠號來初始化TcpListener實例
tlTcpListen.Start ( ) ; //開始監聽
statusBar1.Text = "正在監聽" ;
tcClient = tlTcpListen.AcceptTcpClient ( ) ; //通過TCP連接請求
nsStream = tcClient.GetStream ( ) ; //獲取用以發送、接收數據的網路基礎數據流
srRead=new StreamReader(nsStream);//以得到的網路基礎數據流來初始化StreamReader實例
statusBar1.Text = "已經連接!";
while( blistener ) //循環偵聽
{
 string sMessage = srRead.ReadLine();//從網路基礎數據流中讀取一行數據
 if ( sMessage == "STOP" ) //判斷是否為斷開TCP連接控制碼
 {
tlTcpListen.Stop(); //關閉偵聽
nsStream.Close(); //釋放資源
srRead.Close();
statusBar1.Text = "連接已經關閉!" ;
thThreadRead.Abort(); //中止線程
return;
 }
 string sTime = DateTime.Now.ToShortTimeString ( ) ; //獲取接收數據時的時間
 listBox1.Items.Add ( sTime + " " + sMessage ) ;
}
 }
 catch ( System.Security.SecurityException )
 {
MessageBox.Show ( "偵聽失敗!" , "錯誤" ) ;
 }
}
//開始監聽
private void button1_Click(object sender, System.EventArgs e)
{
 thThreadRead = new Thread ( new ThreadStart ( Listen ) );
 thThreadRead.Start();//啟動線程
 button1.Enabled=false;
}
// 清理所有正在使用的資源。
protected override void Dispose( bool disposing )
{
 try
 {
tlTcpListen.Stop(); //關閉偵聽
nsStream.Close();
srRead.Close();//釋放資源
thThreadRead.Abort();//中止線程
 }
 catch{}
 if( disposing )
 {
if (components != null)
{
 components.Dispose();
}
 }
 base.Dispose( disposing );
}
//TCP協議的發送端
using System.Net.Sockets; //使用到TcpListen類
using System.Threading; //使用到線程
using System.IO; //使用到StreamWriter類
using System.Net; //使用IPAddress類、IPHostEntry類等

private StreamWriter swWriter; //用以向網路基礎數據流傳送數據 
private NetworkStream nsStream; //創建發送數據的網路基礎數據流 
private TcpClient tcpClient;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2; //通過它實現向遠程主機提出TCP連接申請 
private bool tcpConnect = false; //定義標識符,用以表示TCP連接是否建立

//連接 
private void button1_Click(object sender, System.EventArgs e)
{
 IPAddress ipRemote ;
 try
 {
ipRemote = IPAddress.Parse ( textBox1.Text ) ;
 }
 catch //判斷給定的IP地址的合法性
 {
MessageBox.Show ( "輸入的IP地址不合法!" , "錯誤提示!" ) ;
return ;
 }
 IPHostEntry ipHost ;
 try
 {
ipHost = Dns.Resolve ( textBox1.Text ) ; 
 }
 catch //判斷IP地址對應主機是否在線
 {
MessageBox.Show ("遠程主機不在線!" , "錯誤提示!" ) ;
return ;
 }
 string sHostName = ipHost.HostName ;
 try
 {
TcpClient tcpClient = new TcpClient(sHostName,8000);//對遠程主機的8000埠提出TCP連接申請
nsStream = tcpClient.GetStream();//通過申請,並獲取傳送數據的網路基礎數據流
swWriter = new StreamWriter(nsStream);//使用獲取的網路基礎數據流來初始化StreamWriter實例
button1.Enabled = false ;
button2.Enabled = true ;
tcpConnect = true ;
statusBar1.Text = "已經連接!" ;
 }
 catch
 {
MessageBox.Show ( "無法和遠程主機8000埠建立連接!" , "錯誤提示!" ) ;
return ;
 }
}

//發送
private void button2_Click(object sender, System.EventArgs e)
{
 if (textBox2.Text !="")
 {
swWriter.WriteLine(textBox2.Text);//刷新當前數據流中的數據
swWriter.Flush();
 }
 else
 {
MessageBox.Show("發送信息不能為空!","錯誤提示!");
 }
}
// 清理所有正在使用的資源。
protected override void Dispose( bool disposing )
{
 if ( tcpConnect )
 {
swWriter.WriteLine ( "STOP" ) ; //發送控制碼
swWriter.Flush (); //刷新當前數據流中的數據
nsStream.Close (); //清除資源
swWriter.Close ();
 }
 if( disposing )
 {
if (components != null)
{
 components.Dispose();
}
 }
 base.Dispose( disposing );

8、java socket編程中伺服器指的是什麼? 客戶端指的又是什麼?

/*服務端*/

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

第四步,編寫伺服器端的主體代碼,如下所示。

public class ServerCode

{
// 設置埠號
public static int portNo = 3333;
public static void main(String[] args) throws IOException
{
ServerSocket s = new ServerSocket(portNo);

System.out.println("The Server is start: " + s);

// 阻塞,直到有客戶端連接

Socket socket = s.accept();
try

{

System.out.println("Accept the Client: " + socket);

//設置IO句柄
BufferedReader in = new BufferedReader(new InputStreamReader(socket

.getInputStream()));

PrintWriter out = new PrintWriter(new BufferedWriter(

new OutputStreamWriter(socket.getOutputStream())), true);

while (true)

{

String str = in.readLine();

if (str.equals("byebye"))

{

break;

}

System.out.println("In Server reveived the info: " + str);

out.println(str);

}

}

finally

{

System.out.println("close the Server socket and the io.");

socket.close();

s.close();

}

}

}
/*客戶端*/

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.InetAddress;

import java.net.Socket;

第二,編寫客戶端的主體代碼,如下所示:

public class ClientCode

{

static String clientName = "Mike";

//埠號

public static int portNo = 3333;

public static void main(String[] args) throws IOException

{

// 設置連接地址類,連接本地

InetAddress addr = InetAddress.getByName("localhost");

//要對應伺服器端的3333埠號

Socket socket = new Socket(addr, portNo);

try

{

System.out.println("socket = " + socket);

// 設置IO句柄
BufferedReader in = new BufferedReader(new InputStreamReader(socket

.getInputStream()));
PrintWrite out = new PrintWriter(BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

out.println("Hello Server,I am " + clientName);

String str = in.readLine();

System.out.println(str);

out.println("byebye");

}

finally

{

System.out.println("close the Client socket and the io.");

socket.close();

}

}

}

9、用socket編程實現伺服器和客戶端的通信

這個不是很難的
,你隨便找本VC的書基本上都有的,如果沒找到發郵件給我:[email protected]

10、使用socket網路編程技術,創建伺服器端和客戶端。

沒有100%完全和你復說的一制樣的。。
只有類似的,然後自己改改成自己的,
因為,無緣無故,誰也不會沒事做為了你寫一個這代碼。。
只有相似的,然後改成自己的。。。
希望有用
kuaipan.cn/file/id_61615948720784723.htm

與socket編程伺服器端相關的知識