導航:首頁 > 程序命令 > socket命令行

socket命令行

發布時間:2022-04-23 06:04:42

㈠ 用java編寫一個socket通信程序。

importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.net.ServerSocket;
importjava.net.Socket;

publicclassServer{

publicstaticvoidmain(String[]args){
ServerSocketss;
Sockets;
try{
ss=newServerSocket(8888);
s=ss.accept();
InputStreamReaderisr=newInputStreamReader(s.getInputStream());
BufferedReaderbr=newBufferedReader(isr);

System.out.println(br.readLine());
br.close();
isr.close();

}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}


}

}

importjava.io.PrintWriter;
importjava.net.Socket;


publicclassClient{

publicstaticvoidmain(String[]args){

try{
Sockets=newSocket("127.0.0.1",8888);

PrintWriterpw=newPrintWriter(s.getOutputStream());
pw.write("helloserver");
pw.flush();

pw.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}

}

㈡ java socket 的問題 伺服器和客戶端輸入沒反應,在對方的命令行窗口顯示不出來

package com.v512.TestServer;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;

public class TestServer {

public static void main(String[] args) {
try {
ServerSocket s=new ServerSocket(8888);
Socket s1=s.accept();

OutputStream os=s1.getOutputStream();
DataOutputStream dos=new DataOutputStream(os);

InputStream is=s1.getInputStream();
DataInputStream dis=new DataInputStream(is);

InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);

String info;
while(true){
info=dis.readUTF();
System.out.println("對方說:"+info);
if(info.equals("bye"))
break;
info=br.readLine();
dos.writeUTF(info);
if(info.equals("bye"))
break;
}
dos.close();
dis.close();
s1.close();
}
catch (SocketException e) {
System.out.println("網路連接異常,程序退出!");
}
catch (IOException e) {
e.printStackTrace();
}

}

}

package com.v512.TestServer;

import java.net.Socket;
import java.net.SocketException;
import java.io.*;
public class TestClient {

public static void main(String[] args) {
try {
Socket s1 = new Socket("localhost",8888);

InputStream is=s1.getInputStream();
DataInputStream dis=new DataInputStream(is);

OutputStream os=s1.getOutputStream();
DataOutputStream dos=new DataOutputStream(os);

InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);

String info;
while(true){
info=br.readLine();
dos.writeUTF(info);
if(info.equals("bye"))
break;
info=dis.readUTF();
System.out.println("對方說:"+info);
if(info.equals("bye"))
break;
}
dis.close();
dos.close();
s1.close();
} catch (SocketException e) {
System.out.println("網路連接異常,程序退出!");
} catch (IOException e) {
e.printStackTrace();
}

}

}
嘗試下我改的。。。。。

㈢ 基於Socket編程實現兩台linux計算機之間傳輸文件的程序netcp,實現命令行方式同步推送。急用,謝謝

1、採用socket的tcp協議開發,採用server/client架構;
2、首先在兩台計算機上開發一個deamon程序,後台運行server,解釋遠程客戶端的命令;
3、開發客戶端程序netcp,解釋輸入參數,並從遠程伺服器獲取文件,寫入本機的目錄中。

㈣ delphi怎樣用socket發送,接受record類型的數據

網路應用分為客戶端和服務端兩部分,而Socket類是負責處理客戶端通信的Java類。通過這個類可以連接到指定IP或域名的伺服器上,並且可以和伺服器互相發送和接受數據。在本文及後面的數篇文章中將詳細討論Socket類的使用,內容包括Socket類基礎、各式各樣的連接方式、get和set方法、連接過程中的超時以及關閉網路連接等。

在本文中,我們將討論使用Socket類的基本步驟和方法。一般網路客戶端程序在連接服務程序時要進行以下三步操作。

1.連接伺服器

2.發送和接收數據

3.關閉網路連接

一、連接伺服器

在客戶端可以通過兩種方式來連接伺服器,一種是通過IP的方式來連接伺服器,而另外一種是通過域名方式來連接伺服器。

其實這兩種方式從本質上來看是一種方式。在底層客戶端都是通過IP來連接伺服器的,但這兩種方式有一定的差異,如果通過IP方式來連接服務端程序,客戶端只簡單地根據IP進行連接,如果通過域名來連接伺服器,客戶端必須通過DNS將域名解析成IP,然後再根據這個IP來進行連接。

在很多程序設計語言或開發工具中(如C/C++、Delphi)使用域名方式連接伺服器時必須自己先將域名解析成IP,然後再通過IP進行連接,而在Java中已經將域名解析功能包含在了Socket類中,因此,我們只需象使用IP一樣使用域名即可。

通過Socket類連接伺服器程序最常用的方法就是通過Socket類的構造函數將IP或域名以及埠號作為參數傳入Socket類中。Socket類的構造函數有很多重載形式,在這一節只討論其中最常用的一種形式:public Socket(String host, int port)。從這個構造函數的定義來看,只需要將IP或域名以及埠號直接傳入構造函數即可。下面的代碼是一個連接服務端程序的例子程序:

package mysocket;

import java.net.*;

public class MyConnection

{

public static void main(String[] args)

{

try

{

if (args.length > 0)

{

Socket socket = new Socket(args[0], 80);

System.out.println(args[0] + "已連接成功!");

}

else

System.out.println("請指定IP或域名!");

}

catch (Exception e)

{

System.err.println("錯誤信息:" + e.getMessage());

}

}

}

在上面的中,通過命令行參數將IP或域名傳入程序,然後通過Socket socket = new Socket(args[0], 80)連接通過命令行參數所指定的IP或域名的80埠。由於Socket類的構造函數在定義時使用了throws,因此,在調用Socket類的構造函數時,必須使用try…catch語句來捕捉錯誤,或者對main函數使用throws語句來拋出錯誤。

測試正確的IP

java mysocket.MyConnection 127.0.0.1

輸出結果:127.0.0.1已經連接成功!

測試錯誤的IP

java mysocket.MyConnection 10.10.10.10

輸出結果:錯誤信息:Connection timed out: connect

註:10.10.10.10是一個並不存在的IP,如果這個IP在你的網路中存在,請使用其它的不存在的IP。

測試正確的域名

java mysocket.MyConnection www.ptpress.com.cn

輸出結果:www.ptpress.com.cn已經連接成功!

測試錯誤的域名

java mysocket.MyConnection www.ptpress1.com.cn

輸出結果:錯誤信息:www.ptpress1.com.cn

使用Socket類連接伺服器可以判斷一台主機有哪些埠被打開。下面的代碼是一個掃描本機有哪些埠被打開的程序。

㈤ 如何在ubuntu中命令行關閉python socket伺服器

本文介紹下,在solaris 系統下,python socket server重啟後,提示埠被佔用,telnet埠失敗。這里給出一個解決方法,有需要的朋友參考下。
在solaris 系統下,socket server被重啟後,提示埠被佔用,telnet埠又是不成功的,說明服務已被關閉。
通過netstat可以看到埠還處於於fin_wait_2狀態,solaris要4分鍾才能關閉。
遇到這個問題時,可以採用如下的方法解決,以減少等待時間。
1,加上s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)。
代碼:

復制代碼代碼示例:
self.host=socket.gethostbyname(socket.gethostname())
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((self.host,self.port))
s.listen(5)
2,修改系統fin_wait,time_wait的時間設置。這個時間改短,也利於系統系能。
修改方法
查看或設置:
使用get命令來確定當前時間間隔,並使用set命令將時間間隔指定為30秒。
例如:

復制代碼代碼示例:
ndd -get /dev/tcp tcp_time_wait_interval
ndd -set /dev/tcp tcp_time_wait_interval 30000
預設值:對於 Solaris 操作系統,預設等待時間間隔為 240000 毫秒(即 4 分鍾)。
建議值:60000 毫秒。
Solaris TCP_FIN_WAIT_2_FLUSH_INTERVAL
描述:
指定禁止處於FIN_WAIT_2狀態的連接保持該狀態的計時器時間間隔。
當連接比率較高時,這將累積大量的TCP/IP連接,從而導致伺服器性能下降。在高峰時間段,伺服器會發 生延遲。
如果伺服器延遲,netstat命令顯示對HTTP Server打開的許多套接字處於CLOSE_WAIT或FIN_WAIT_2狀態。
明顯的延遲可能會長達4分鍾,其間伺服器無法發送任何響應,但是CPU利用率保持很高,所有活動都在系統進程中。
查看和設置:
使用get命令來確定當前時間間隔,並使用set命令將時間間隔指定為67.5秒。
例如:

㈥ UDP和Socket通信步驟

這是在網上找到的,希望對你有所幫助。
sockets(套接字)編程有三種,流式套接字(SOCK_STREAM),數據報套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);

WINDOWS環境下TCP/UDP編程步驟:

1. 基於TCP的socket編程是採用的流式套接字。

在這個程序中,將兩個工程添加到一個工作區。要鏈接一個ws2_32.lib的庫文件。

伺服器端編程的步驟:

1:載入套接字型檔,創建套接字(WSAStartup()/socket());

2:綁定套接字到一個IP地址和一個埠上(bind());

3:將套接字設置為監聽模式等待連接請求(listen());

4:請求到來後,接受連接請求,返回一個新的對應於此次連接的套接字(accept());

5:用返回的套接字和客戶端進行通信(send()/recv());

6:返回,等待另一連接請求;

7:關閉套接字,關閉載入的套接字型檔(closesocket()/WSACleanup())。

伺服器端代碼如下:

#include <stdio.h>

#include <Winsock2.h>

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

if ( LOBYTE( wsaData.wVersion ) != 1 ||

HIBYTE( wsaData.wVersion ) != 1 ) {

WSACleanup( );

return;

}

SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(6000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

listen(sockSrv,5);

SOCKADDR_IN addrClient;

int len=sizeof(SOCKADDR);

while(1)

{

SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

char sendBuf[50];

sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));

send(sockConn,sendBuf,strlen(sendBuf)+1,0);

char recvBuf[50];

recv(sockConn,recvBuf,50,0);

printf("%s\n",recvBuf);

closesocket(sockConn);

}

}

客戶端編程的步驟:

1:載入套接字型檔,創建套接字(WSAStartup()/socket());

2:向伺服器發出連接請求(connect());

3:和伺服器端進行通信(send()/recv());

4:關閉套接字,關閉載入的套接字型檔(closesocket()/WSACleanup())。

客戶端的代碼如下:

#include <stdio.h>

#include <Winsock2.h>

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

if ( LOBYTE( wsaData.wVersion ) != 1 ||

HIBYTE( wsaData.wVersion ) != 1 ) {

WSACleanup( );

return;

}

SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(6000);

connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

char recvBuf[50];

recv(sockClient,recvBuf,50,0);

printf("%s\n",recvBuf);

send(sockClient,"hello",strlen("hello")+1,0);

closesocket(sockClient);

WSACleanup();

}

2.基於UDP的socket編程是採用的數據報套接字。

在這個程序中,將兩個工程添加到一個工作區。同時還要鏈接一個ws2_32.lib的庫文件。

伺服器端編程的步驟:

1:載入套接字型檔,創建套接字(WSAStartup()/socket());

2:綁定套接字到一個IP地址和一個埠上(bind());

3:等待和接收數據(sendto()/recvfrom());

4:關閉套接字,關閉載入的套接字型檔(closesocket()/WSACleanup())。

伺服器端代碼如下:

#include <winsock2.h>

#include <stdio.h>

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 )

{

return;

}

if ( LOBYTE( wsaData.wVersion ) != 1 ||

HIBYTE( wsaData.wVersion ) != 1 )

{

WSACleanup( );

return;

}

SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(7003);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

char recvBuf[50];

SOCKADDR addrClient;

int len=sizeof(SOCKADDR);

recvfrom(sockSrv,recvBuf,50,0,(SOCKADDR*)&addrClient,&len);

printf("%s\n",recvBuf);

closesocket(sockSrv);

WSACleanup();

}

對於基於UDP的socket客戶端來說,要進行如下步驟:

1:創建一個套接字(socket);

2:向伺服器發送數據(sendto);

3:關閉套接字;

代碼如下:

#include <winsock2.h>

#include <stdio.h>

void main()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

if ( LOBYTE( wsaData.wVersion ) != 2 ||

HIBYTE( wsaData.wVersion ) != 2 ) {

WSACleanup( );

return;

}

SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);

SOCKADDR_IN addrClient;

addrClient.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

addrClient.sin_family=AF_INET;

addrClient.sin_port=htons(8889);

SOCKADDR_IN addrSrv;

sendto(sockClient,"hi",3,0,(SOCKADDR*)&addrClient,sizeof(SOCKADDR));

}

LINUX環境下TCP/UDP編程步驟:

TCP編程步驟:

一. 服務端:

1.socket(int domain,int type,int protocol):建立套接字;

2 .bind(int sockid,struct sockaddr *addrp,socklen_t addrlen):把本機地址和埠跟上一步建立的socket綁定在一起;

3.listen(int sockid,int qsize):監聽某套接字;

4.fd=accept(int sockid,struct sockaddr *callerid,socklen_t *addrlenp):等待某套接字接收信息;

5.recv(int fd,void *buf,size_t nbytes,int flags):從套接字接收數據;

6.close(fd) 和close(sockid)

二.客戶端:

1. socket():建立套接字;

2.connect(int sockid,struct sockaddr *serv_addrp,socklen_t addrlen):連接到伺服器;

3. send(int sockfd,const void *buf,size_t nbytes,int flags):發送數據到伺服器.

4. close(sockid);

UDP編程步驟:

一,服務端:

1. socket():同上;

2. bind():同上;

3. recvfrom(int sockfd,void*buff,size_t nbytes,int flags,struct sockaddr*from,socklen_t*addrlen):在套接字口接收數據,並且記錄下接收到的數據來源;一定要注意這里的參數addrlen,它不僅是函數的輸出,也是函數的輸入!所以要在調用該函數之前對addrlen賦值sizeof(struct sockaddr)。否則返回的地址from將會出錯!

4. close(sockfd);

二. 客戶端:

1. socket();同上;

2. sendto(int sockfd,const void*buff,size_t nbytes,int flags,const struct sockaddr*to,socklen_t addrlen):往指定的地址發送數據;

3. close(sockfd);

㈦ socket編程:我想將socket程序里的輸入在命令行運行時就給出數值,請問有什麼函數嗎

通過命令行將參數傳遞給程序不能使用scanf。需要為main函數添加參數
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char * argv[])//argc參數的個數,argv存放參數的數組
{
int a = 0;
int b = 0;
if(argc == 3)
{
a = atoi(argv[1]);
b = atoi(argv[2]);
}
printf("\na+b=%d\n",a+b);
return 0;
}
argc是命令行參數的個數這里是3
argv存放的是參數,第一個是命令"add_s",第二個是"3",第三個是"2"

㈧ 關於socket通信運行機制的問題(php):

php socket 是以php cli 模式運行的 也就是在伺服器上用命令行執行php xxx.php
而你要保持這個文件的長連接 。就是持久監控。
保持長連接也就是死循環
while(true){
這里寫socket的一些方法
}
這樣他就是會一直執行。設置超時時間為0
這就socket的基本而原理 也是消息隊列的基本原理

㈨ php socket在linux下如何運行

下個相同版本的php源碼,進行編譯安裝,再按照上面步驟搞,生成的so。到rpm裝的那個,修改php.ini進行擴展就行了,

或者到網上找相同版本,相同系統 的編譯好的so文件。

在linux下給PHP安裝socket擴展,參考方法如下:

#cd /usr/soft/php/ext/sockets (進入原php安裝文件下的sockets目錄)
#/usr/local/php/bin/phpize (運行安裝後的php安裝文件下的phpize)
#./configure --prefix=/usr/local/php/lib --with-php-config=/user/local/php/bin/php-config --enable-sockets
#make
#make install
再修改/usr/local/php/etc/php.ini文件
#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/" (php5.4版本以上不用加擴展路徑)

extension=sockets.so

(若不想修改extension_dir路徑或改路徑下還有別的.so文件,亦可直接寫:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/sockets.so)

重啟apache或者nginx等進程,完成。

以上這篇linux下開啟php的sockets擴展支持實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

閱讀全文

與socket命令行相關的資料

熱點內容
視頻壓縮形式怎麼改 瀏覽:366
perl程序員 瀏覽:787
電子表格對比命令 瀏覽:608
php循環輸出數組內容 瀏覽:748
電腦加密能不能強制關掉 瀏覽:616
趣味單人解壓桌游 瀏覽:210
oppo手機谷歌伺服器無法核實什麼 瀏覽:318
軟體怎麼加密華為 瀏覽:220
掃地機怎麼安裝app 瀏覽:317
考研結合特徵值計演算法 瀏覽:514
操作系統演算法綜合題 瀏覽:150
華為程序員待遇 瀏覽:545
程序員帶娃的圖片 瀏覽:77
迷你雲伺服器怎麼下載 瀏覽:813
福州溯源碼即食燕窩 瀏覽:232
當樂伺服器怎麼樣 瀏覽:713
nc編程軟體下載 瀏覽:382
如何限制手機app的使用 瀏覽:307
安卓華為手機怎麼恢復桌面圖標 瀏覽:956
我的世界電腦版伺服器地址在哪找 瀏覽:533