導航:首頁 > 編程語言 > 基於tcp協議的伺服器客戶端程序

基於tcp協議的伺服器客戶端程序

發布時間:2023-08-08 08:24:47

『壹』 如何編寫簡單的socket網路程序 如何編寫基於TCP協議的網路程序

下面是個人用了一個40分鍾左右的時間編寫的程序,在這編寫過程中,非常重要的一點就是: 要理解 tcp協議編寫程序的原理,即編寫伺服器端的過程,以及編寫客戶端的過程。 只要把握這兩點就可以很容易編寫出來了,但是要快速編寫出這個程序,那麼VC6.0開發工具里,最好要安裝一個番茄插件,這個插件可以快速提高你的編寫程序的效率,還有也要安裝msdn 文檔,這樣在編寫過程中,遇到對某個函數的參數想不全的時候,使用msdn就能快速幫你回憶了。 呵呵,如果你那一天去面試一家牛逼的公司的哇,很有可能就是 在筆試完成之後,就要進行機試了,這就完全考查出你的真正編程水平了。 能在極短時間里完成一個socket網路程序,那麼就可以令面試官感到非常滿意了。 不過,這個程序,還沒有連接資料庫,以後再繼續搞了。
如果你去面試 深圳科技園 那家 偉易達 集團公司的軟體工程師的哇,那麼機試題目就是這個。 當時我去面試,首先進行筆試,面試官對我筆試成績比較滿意,所以就叫我留下來吃頓飯,下午進行機試。 當時我應聘崗位是Linux系統工程師C語言, 可是筆試題目,不但考核C,還考核C++,javaScript,html。 我感覺好奇怪,心裡想,好像我是應聘VC++開發那個崗位了。 於是我等到下午,他拿來機試題目之時,才真正明白,果然是他要安排我從事VC++開發了,題目就是:編寫基於TCP/IP協議網路程序,並實現簡單的聊天程序,而且要連接資料庫。 當時我又失望了。 於是我就提出,我不想做這個題目,因為我是想應聘Linux系統C語言開發的。 就這樣失望的走了。
下面是個人完全能運行的代碼
伺服器端源碼:
#include<stdio.h>
#include <Winsock2.h>
#pragma comment (lib,"ws2_32.lib")
int main()
{

word wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}

if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return 0;
}
SOCKET socketServer=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrServer;
addrServer.sin_family=AF_INET;
addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrServer.sin_port=htons(6000);
bind(socketServer, (struct sockaddr *)&addrServer, sizeof(struct sockaddr));
listen(socketServer, 5);
SOCKADDR_IN addrClient;
int addrLen=sizeof(SOCKADDR_IN);
char sendBuf[100];
char recvBuf[100];
int i=1;
while(1)
{
printf("伺服器端等待第%d個客戶端連接請求...\n", i++);
SOCKET newsocketServer=accept(socketServer,(struct sockaddr *)&addrClient, &addrLen);
if(newsocketServer!=INVALID_SOCKET)
{
printf("伺服器端與客戶端連接成功...\n");
}
memset(sendBuf,0,100);
sprintf(sendBuf,"Welcome you to come here");
send(newsocketServer, sendBuf, strlen(sendBuf)+1,0);
memset(recvBuf,0,100);
recv(newsocketServer,recvBuf,100,0);
printf("伺服器端收到信息:%s\n",recvBuf);
closesocket(newsocketServer);
}
WSACleanup();
return 0;
}
此文章來自於個人博客: 阿浪博客 http://blog.163.com/wenxianliang08@126/
客戶端源碼:
#include<stdio.h>
#include <Winsock2.h>
#pragma comment (lib,"ws2_32.lib")
int main()
{

WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}

if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return 0;
}

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

SOCKADDR_IN addrServer;

addrServer.sin_family=AF_INET;

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

addrServer.sin_port=htons(6000);

char sendBuf[100];

char recvBuf[100];
printf("客戶端向伺服器端連接請求...\n");
int Isconnect=connect(socketClient, (struct sockaddr *)&addrServer, sizeof(struct sockaddr));
if(Isconnect!=0)
{
printf("客戶端無法連接伺服器端...\n");
return 0;
}
printf("客戶端已成功連接伺服器端...\n");
memset(recvBuf,0,100);

recv(socketClient,recvBuf,100,0);
printf("客戶端收到信息:%s\n",recvBuf);
memset(sendBuf,0,100);

sprintf(sendBuf,"Hello , I am Mr Wen !");

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

closesocket(socketClient);

WSACleanup();

return 0;
}

『貳』 關於java編程。設計一個基於TCP/IP協議的網路程序,實現如下功能:

寫好了,有什麼問題請追問。
客戶端:

import java.net.*;
import java.io.*;

public class TestSocketClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 5566);
System.out.println("請輸入計算式:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s1 = br.readLine();
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
dos.writeUTF(s1);
dos.flush();

double s = dis.readDouble();
System.out.println("計算結果:" + s);
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("連接出錯");
System.exit(-1);
}
}
}

伺服器端:
import java.net.*;
import java.io.*;

public class TestSocketServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(5566);
Socket socket = ss.accept();

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
String s = null;
if ((s = dis.readUTF()) != null) {
System.out.println("接收到的算式:" + s);
double result = 0;
String[] sarr1 = s.split("[\\+\\-\\*\\/]");

double a = Double.parseDouble(sarr1[0].trim());
double b = Double.parseDouble(sarr1[1].trim());

String[] sarr2 = s.split("^(-?\\d+)(\\.\\d+)?");
char c = sarr2[1].trim().charAt(0);
switch (c) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
default:
break;
}
dos.writeDouble(result);
dos.flush();
}
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}

}
}

『叄』 用C語言幫忙寫一個「TCP Client/Server模式的通信程序設計與實現」

CLIENT:
#include <stdio.h>
#include <stdio.h>
#include <winsock.h>
#pragma comment(lib,"Ws2_32")

#define PORT 6666 /* 客戶機連接遠程主機的埠 */
#define MAXDATASIZE 100 /* 每次可以接收的最大位元組 */
int main()
{
int sockfd, numbytes;
char buf[MAXDATASIZE];
char msg[MAXDATASIZE];
char *argv="127.0.0.1";
struct sockaddr_in their_addr; /* 對方的地址埠信息 */

WSADATA ws;WSAStartup(MAKEWORD(2,2),&ws); //初始化Windows Socket Dll
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
//如果建立socket失敗,退出程序
printf("socket error\n");
exit(1);
}

//連接對方
their_addr.sin_family = AF_INET; /* 協議類型是INET */
their_addr.sin_port = htons(PORT); /* 連接對方PORT埠 */
their_addr.sin_addr.s_addr = inet_addr(argv); /* 連接對方的IP */
if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)
{
//如果連接失敗,退出程序
printf("connet error\n");
closesocket(sockfd);
exit(1);
}

while(1){
scanf("%s",msg);
//發送數據
if (send(sockfd, msg, MAXDATASIZE, 0) == -1)

{
printf("send error");
closesocket(sockfd);
exit(1);
}

//接收數據,並列印出來
if ((numbytes=recv(sockfd, buf, MAXDATASIZE, 0)) == -1)
{
//接收數據失敗,退出程序
printf("recv error\n");
closesocket(sockfd);
exit(1);
}
buf[numbytes] = '\0';
printf("Received: %s\n",buf); }
closesocket(sockfd);
return 0;
}

SERVER:

#include <stdio.h>
#include <winsock.h>
#pragma comment(lib,"Ws2_32")
#define MYPORT 6666 /*定義用戶連接埠*/
#define BACKLOG 10 /*多少等待連接控制*/ #define MAXDATASIZE 100
int main()
{
int sockfd, new_fd; /*定義套接字*/
struct sockaddr_in my_addr; /*本地地址信息 */
struct sockaddr_in their_addr; /*連接者地址信息*/
int sin_size,numbytes; char msg[10],buf[MAXDATASIZE];
WSADATA ws;
WSAStartup(MAKEWORD(2,2),&ws); //初始化Windows Socket Dll
//建立socket
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
//如果建立socket失敗,退出程序
printf("socket error\n");
exit(1);
}
//bind本機的MYPORT埠
my_addr.sin_family = AF_INET; /* 協議類型是INET */
my_addr.sin_port = htons(MYPORT); /* 綁定MYPORT埠*/
my_addr.sin_addr.s_addr = INADDR_ANY; /* 本機IP*/
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)
{
//bind失敗,退出程序
printf("bind error\n");
closesocket(sockfd);
exit(1);
}

//listen,監聽埠
if (listen(sockfd, BACKLOG) == -1)
{
//listen失敗,退出程序
printf("listen error\n");
closesocket(sockfd);
exit(1);
}
printf("listen...");
//等待客戶端連接
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)
{
printf("accept error\n");
closesocket(sockfd);
exit(1);
}
printf("\naccept!\n");

while(1) {
if((numbytes=recv(new_fd, buf, MAXDATASIZE, 0)) == -1) continue;

if(!strcmp(buf,"bye"))
{
//成功,關閉套接字

closesocket(sockfd);
closesocket(new_fd);
return 0;
}
printf("%s %d",buf,strlen(buf));
sprintf(msg,"%d",strlen(buf));

if (send(new_fd,msg,MAXDATASIZE, 0) == -1)

{
printf("send ERRO");
closesocket(sockfd);
closesocket(new_fd);
return 0;
}
}
}

『肆』 編寫一個簡單的TCP通信程序。伺服器發送「你好我是伺服器」,客戶端接收該信息並顯示在屏幕上。用Java寫

1、伺服器端

importjava.io.DataOutputStream;
importjava.io.IOException;
importjava.net.ServerSocket;
importjava.net.Socket;

publicclassSocketServer{

privatestaticfinalintPORT=8088;

publicstaticvoidmain(String[]args){
ServerSocketserver=null;
try{
server=newServerSocket(PORT);
while(true){
Socketclient=server.accept();
newThread(newServer(client)).start();
}
}catch(IOExceptione){
e.printStackTrace();
}
}

}

classServerimplementsRunnable{

privateSocketclient;

publicServer(Socketclient){
this.client=client;
}

publicvoidrun(){
DataOutputStreamoutput=null;
try{
output=newDataOutputStream(client.getOutputStream());
output.writeUTF("你好我是伺服器");
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(output!=null)output.close();
output=null;
}catch(IOExceptione){}
}
}

}

2、客戶端

importjava.io.DataInputStream;
importjava.io.IOException;
importjava.net.Socket;
importjava.net.UnknownHostException;

{

privatestaticfinalintPORT=8088;

publicstaticvoidmain(String[]args){
Socketsocket=null;
try{
socket=newSocket("127.0.0.1",PORT);
DataInputStreamin=newDataInputStream(socket.getInputStream());
Stringres=in.readUTF();
System.out.println(res);
if(in!=null)in.close();
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(socket!=null){
try{
socket.close();
}catch(IOExceptione){}
}
}
}
}

『伍』 基於TCP協議的應用程序有哪些

這個有很多,你可以參考一下:
斜線前面的數字代表埠號,斜線後面表示tcp和udp,最後是協議名稱,希望能幫到你!
21/tcp FTP 文件傳輸協議
22/tcp SSH 安全登錄、文件傳送(SCP)和埠重定向
23/tcp Telnet 不安全的文本傳送
25/tcp SMTP Simple Mail Transfer Protocol (E-mail)
69/udp TFTP Trivial File Transfer Protocol
79/tcp finger Finger
80/tcp HTTP 超文本傳送協議 (WWW)
88/tcp Kerberos Authenticating agent
110/tcp POP3 Post Office Protocol (E-mail)
113/tcp ident old identification server system
119/tcp NNTP used for usenet newsgroups
220/tcp IMAP3
443/tcp HTTPS used for securely transferring web pages

(望樓主採納哦)

『陸』 如何用C#實現多線程TCP協議的伺服器端程序

用C#實現多線程TCP協議的伺服器端程序:
// <summary>
/// Tcp客戶線程類(服務端),ThreadServerProcessor 線程產生的客戶連接,用該線程讀寫
/// </summary>
public class ThreadClientProcessor
{
//Tcp連接實例
private TcpClient tcpClient;
//消息框,本來想寫日誌用
private System.Windows.Forms.ListBox MessageList;
private string Password; //該連接登陸密碼
private string Cmd1Echo;
private string Cmd2Echo;
private bool ClientLogOn;//客戶是否登陸
private bool TcpClose;
public ThreadClientProcessor(){}
//構造函數,參數解釋:Tcp客戶,消息框,該服務密碼(password命令後的參數) ,命令回應串 1,2 ******************
public ThreadClientProcessor(TcpClient client , ListBox listBox,string LogonText ,string cmd1echo,string cmd2echo)
{
ClientList.Add(this); //把當前實例加入一個列表中,方便以後控制
this.tcpClient=client;
this.MessageList=listBox;
this.Password=LogonText;
this.Cmd1Echo=cmd1echo;
this.Cmd2Echo=cmd2echo;
this.ClientLogOn=false;
this.TcpClose=false;
}
public static char[] CmdSplit={' '}; //讀來的串由' ' 進行分離,命名+' '+參數
//public const string[] Cmd=new string[] { "password","cmd1","cmd2","echo","bye"};
//該函數由你自己寫,這個只是給一個例子,
//功能:命令處理器,給個命令串,返回該命令處理結果,把命令和處理結果放在一個文本文件里,便於系統升級
public string TcpCmd(string s)
{
string result;
try
{
string cmdarg=s.Trim();
string[] args=cmdarg.Split(CmdSplit);
string cmd=args[0].ToLower();
switch (cmd )
{
case "password" :
if (args.Length>1)
{
ClientLogOn= Password.Equals(args[1].Trim());
result=ClientLogOn? "登陸成功":"密碼不正確,未登陸";
}
else result= "登陸時候,沒有輸入密碼";
break;
case "cmd1":
result=ClientLogOn?this.Cmd1Echo:"該命令無權執行,請先登陸";
break;
case "cmd2":
result=ClientLogOn?this.Cmd2Echo:"該命令無權執行,請先登陸";
break;
case "echo":
result=string.Format("伺服器回應:\n {0}",s);
break;
case "bye":
this.TcpClose=true;
result="DisConnected";
break;
default:
result="不可識別的命令";
break;
}
}
catch
{
result="解析命令發生錯誤,你輸入的是狗屁命令,TMD *^* ";
}
return result;
} //end cmd
//定義一個線程,該線程對應的函數是 void start()(不是Start())********************************
//一下程序主要是操作該線程
public System.Threading.Thread tcpClientThread;
//啟動客戶連接線程 *************************************************************
public void Start()
{
tcpClientThread=new Thread(new ThreadStart(start));
tcpClientThread.Priority=ThreadPriority.BelowNormal;
tcpClientThread.Start();
}
//斷開該當前實例連接,終止線程 **************************************************************
public void Abort()
{
if (this.tcpClientThread!=null)
{
//tcpClientThread.Interrupt();
tcpClientThread.Abort();
//一定要等一會兒,以為後邊tcpClient.Close()時候,會影響NetWorkStream的操作
Thread.Sleep(TimeSpan.FromMilliseconds(100));
tcpClient.Close();
}
}
//靜態列表,包含了每個連接實例(在構造實例時候使用了 ArrayList.Add( object))
private static System.Collections.ArrayList ClientList=new ArrayList();
//斷開所有的Tcp客戶連接,靜態方法*************************************************************
public static void AbortAllClient()
{
for(int j=0 ;j< ClientList.Count;j++)
{
//從實例列表中取一個對象,轉化為ThreadClientProcessor對象
ThreadClientProcessor o=(ThreadClientProcessor ) ClientList[j];
//調用ThreadClientProcessor 對象的停止方法
o.Abort();
}
//清除連接列表
ClientList.Clear();
}
//讀寫連接的函數,用於線程//*******************************************************************
private void start()
{
byte[] buf=new byte[1024*1024]; //預先定義1MB的緩沖
int Len=0; //流的實際長度
NetworkStream networkStream=tcpClient.GetStream(); //建立讀寫Tcp的流
try
{
byte[] p=Encoding.UTF8.GetBytes(" 歡迎光臨,請輸入密碼" );
//向Tcp連接寫 歡迎消息
if (!this.ClientLogOn )
networkStream.Write(p,0,p.Length);
//開始循環讀寫tcp流
while (!TcpClose)
{
//如果當前線程是在其它狀態,(等待掛起,等待終止.....)就結束該循環
if (Thread.CurrentThread.ThreadState!=ThreadState.Running)
break;
//判斷Tcp流是否有可讀的東西
if ( networkStream.DataAvailable)
{
//從流中讀取緩沖位元組數組
Len=networkStream.Read(buf,0,buf.Length);
//轉化緩沖數組為串
string cmd=Encoding.UTF8.GetString(buf,0,Len);
this.MessageList.Items.Add("客戶機:"+cmd);
//處理該緩沖的串(分析命令),分析結果為res串
string res=TcpCmd(cmd);
//把命令的返回結果res 轉化為位元組數組
byte[] result=Encoding.UTF8.GetBytes(res);
//發送結果緩沖數組給客戶端
networkStream.Write(result,0,result.Length);
this.MessageList.Items.Add("伺服器回應:"+res);
}
else
{
//Thread.Sleep(TimeSpan.FromMilliseconds(200d));
//this.MessageList.Items.Add("客戶機無命令");
//如果當前Tcp連接空閑,客戶端沒有寫入,則當前線程停止200毫秒
Thread.Sleep(TimeSpan.FromMilliseconds(200d));
}
}

『柒』 c++編寫的tcp協議客戶端和伺服器程序問題

首先你要確保兩個機器能互相ping通(網路確實是暢通的才可以!)

你服務端回綁定的IP估計是用答的127.0.0.1
//綁定IP和埠
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(8888);
sin.sin_addr.S_un.S_addr = INADDR_ANY; //這里!!

或者,你的客戶端使用的是127.0.0.1
sockaddr_in serAddr;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(8888);
serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //127.0.0.1是本機的一個loopback地址,你應該寫成對端的SERVER的實際ip

或者
SERVER端的機器上有防火牆擋住了你的應用訪問。

兩個方面,一個是程序代碼上的,一個是機器環境上的。自己多方面檢查一下吧。

『捌』 採用tcp協議,使用socket編程,編寫程序完成客戶端發送消息給服務端,服務端接到消息後,再發

服務端代碼:
/*server.c*/

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <netinet/in.h>

#define PORT 4321
#define BUFFER_SIZE 1024
#define MAX_QUE_CONN_NM 5

int main()
{
struct sockaddr_in server_sockaddr, client_sockaddr;
int sin_size, recvbytes;
int sockfd, client_fd;
char buf[BUFFER_SIZE];

/*建立socket連接*/
if ((sockfd = socket(AF_INET,SOCK_STREAM,0))== -1)
{
perror("socket");
exit(1);
}
printf("Socket id = %d\n",sockfd);

/*設置sockaddr_in 結構體中相關參數*/
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(PORT);
server_sockaddr.sin_addr.s_addr = INADDR_ANY;
bzero(&(server_sockaddr.sin_zero), 8);

int i = 1;/* 使得重復使用本地地址與套接字進行綁定 */
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));

/*綁定函數bind*/
if (bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr))== -1)
{
perror("bind");
exit(1);
}
printf("Bind success!\n");

/*調用listen函數*/
if (listen(sockfd, MAX_QUE_CONN_NM) == -1)
{
perror("listen");
exit(1);
}
printf("Listening....\n");

/*調用accept函數,等待客戶端的連接*/
if ((client_fd = accept(sockfd, (struct sockaddr *)&client_sockaddr, &sin_size)) == -1)
{
perror("accept");
exit(1);
}

/*調用recv函數接收客戶端的請求*/
memset(buf , 0, sizeof(buf));
if ((recvbytes = recv(client_fd, buf, BUFFER_SIZE, 0)) == -1)
{
perror("recv");
exit(1);
}
printf("Received a message: %s\n", buf);

if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1)
{
perror("send");
exit(1);
}
close(sockfd);
exit(0);
}

客戶端:
/*client.c*/

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <netdb.h>
#include <netinet/in.h>

#define PORT 4321
#define BUFFER_SIZE 1024

int main(int argc, char *argv[])
{
int sockfd, sendbytes;
char buf[BUFFER_SIZE];
struct hostent *host;
struct sockaddr_in serv_addr;

if(argc < 3)
{
fprintf(stderr,"USAGE: ./client Hostname(or ip address) Text\n");
exit(1);
}

/*地址解析函數*/
if ((host = gethostbyname(argv[1])) == NULL)
{
perror("gethostbyname");
exit(1);
}

memset(buf, 0, sizeof(buf));
sprintf(buf, "%s", argv[2]);

/*創建socket*/
if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket");
exit(1);
}

/*設置sockaddr_in 結構體中相關參數*/
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero), 8);

/*調用connect函數主動發起對伺服器端的連接*/
if(connect(sockfd,(struct sockaddr *)&serv_addr, sizeof(struct sockaddr))== -1)
{
perror("connect");
exit(1);
}

/*發送消息給伺服器端*/
if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1)
{
perror("send");
exit(1);
}

if ((recvbytes = recv(sockfd, buf, BUFFER_SIZE, 0)) == -1)
{
perror("recv");
exit(1);
}

close(sockfd);
exit(0);
}

閱讀全文

與基於tcp協議的伺服器客戶端程序相關的資料

熱點內容
安卓平板通用刷機包下載 瀏覽:751
安卓獲取內部存儲路徑 瀏覽:880
寫代碼兩台顯示器 瀏覽:327
unitypackage壓縮文件 瀏覽:493
奕心安卓 瀏覽:563
使用土地的有關證明文件包含哪些 瀏覽:493
數據標注哪裡可以接 瀏覽:482
在家自學編程下什麼學 瀏覽:705
最近很火的app軟體是什麼軟體 瀏覽:862
ai文字工具 瀏覽:157
蘭博玩游戲路徑怎麼選擇正確文件 瀏覽:972
淘寶直通車恢復老版本 瀏覽:510
播放草莓的圖片我都文件 瀏覽:55
微信大文件打不開 瀏覽:767
家裝合同准備哪些文件 瀏覽:296
應用bat合並excel文件 瀏覽:984
迅雷影音文件夾 瀏覽:109
makefile的文件路徑 瀏覽:392
計算機程序文件名擴展名為 瀏覽:982
網路游戲推廣策劃案 瀏覽:609

友情鏈接