Simple TCP Server Client Socket C

轉載鏈接:http://blog.163.com/caipeipei_love@126/blog/static/2596603220101118433940/


tcpserver.c

#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<netdb.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h>
#define portnumber 8080
int main(int argc ,char *argv[])
{int sockfd,new_fd;struct sockaddr_in server_addr;struct sockaddr_in client_addr;int sin_size,iDataNum;
//    const char hello[]="Hello cpp, you are success.\n";char buffer[4096];if(argc!=2){fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);return 0;}// if((portnumber=atoi(argv[1]))<0)// {//    fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);
//  return 0;//  }if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"Socket error:%s\n\a",strerror(errno));return 0;}bzero(&server_addr,sizeof(struct sockaddr_in));server_addr.sin_family=AF_INET;server_addr.sin_addr.s_addr=htonl(INADDR_ANY);server_addr.sin_port=htons(portnumber);if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1){fprintf(stderr,"Bind error:%s\n\a",strerror(errno));return 0;}if(listen(sockfd,5)==-1){fprintf(stderr,"Listen error:%s\n\a",strerror(errno));return 0;}while(1){sin_size=sizeof(struct sockaddr_in);if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1){fprintf(stderr,"Accept error:%s\n\a",strerror(errno));return 0;}fprintf(stdout,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));iDataNum=recv(new_fd,buffer,4096,0);if(iDataNum<0){perror("Recv\n");exit(1);}printf("Recv data is %s\n",buffer);send(new_fd,buffer,sizeof(buffer),0);
// if(write(new_fd,hello,strlen(hello))==-1)
// {
//      fprintf(stderr,"write error:%s\n",strerror(errno));
//      return 0;
// }close(new_fd);}close(sockfd);// exit(0);return 0;
}

tcpclient.c

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<netdb.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<errno.h>int main(int argc,char *argv[])
{int sockfd;char sendbuffer[200];char recvbuffer[200];//  char buffer[1024];struct sockaddr_in server_addr;struct hostent *host;int portnumber,nbytes;if(argc!=3){fprintf(stderr,"Usage :%s hostname portnumber\a\n",argv[0]);exit(1);}if((host=gethostbyname(argv[1]))==NULL){herror("Get host name error\n");exit(1);}if((portnumber=atoi(argv[2]))<0){fprintf(stderr,"Usage:%s hostname portnumber\a\n",argv[0]);exit(1);}if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));exit(1);}bzero(&server_addr,sizeof(server_addr));server_addr.sin_family=AF_INET;server_addr.sin_port=htons(portnumber);server_addr.sin_addr=*((struct in_addr *)host->h_addr);if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1){fprintf(stderr,"Connect error:%s\n",strerror(errno));exit(1);}while(1){printf("Please input your word:\n");scanf("%s",sendbuffer);printf("\n");if(strcmp(sendbuffer,"quit")==0)break;send(sockfd,sendbuffer,sizeof(sendbuffer),0);recv(sockfd,recvbuffer,200,0);printf("recv data of my world is :%s\n",recvbuffer);}// if((nbytes=read(sockfd,buffer,1024))==-1)//{
// fprintf(stderr,"read error:%s\n",strerror(errno));
// exit(1);//  }// buffer[nbytes]='\0';// printf("I have received %s\n",buffer);close(sockfd);exit(0);
}

首先要編譯tcpserver.c,命令:

gcc -g tcpserver.c -o tcpserver

./tcpserver 8080

然后再編譯tcpclient.c,具體命令:

gcc -g tcpclient.c -o tcpclient

./tcpclient localhost 8080


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276312.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276312.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276312.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于dnn的車牌識別_自然場景中文文字識別,身份證火車票都能識別

圖像處理中OCR(Optical Character Recognition光學字符識別)場景非常多&#xff0c;也給大家的工作生活帶來了很多便利&#xff0c;比如車牌識別就能管理停車場車輛的出入&#xff0c;快遞時只需給一個帶有快遞信息的圖就能自動解析上傳發件信息和收件信息&#xff0c;再比如我…

年末的大廠前端面試總結(20屆雙非二本)-終入字節

關注若川視野, 回復"pdf" 領取資料&#xff0c;回復"1"&#xff0c;可加群長期交流學習自我介紹雙非二本,軟件工程,自學前端,今年畢業。喜歡編程,古風,日語和英語。常以冷月心之名混跡前端江湖,也曾在混跡網文圈時用冷月心做筆名簽約掌閱,作品《清起風云》…

面試題(轉的)

第一組   1.燒一根不均勻的繩&#xff0c;從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子&#xff0c;問如何用燒繩的方法來計時一個小時十五分鐘呢?  2.你有一桶果凍&#xff0c;其中有黃色、綠色、紅色三種&#xff0c;閉上眼睛抓取同種顏色的兩個。抓取多少個…

python三酷貓_洛克王國三代酷貓登場 冰水酷貓解析

洛克王國三代酷貓登場 冰水酷貓解析 洛克王國三代武斗酷貓解析三代水靈&#xff0c;在哥斯拉的傾情推薦下&#xff0c;小洛克們都已經很熟悉了吧&#xff01;那和水靈同一期出現的帥哥——武斗酷貓&#xff0c;如果三代遺傳了&#xff0c;會怎么樣呢&#xff1f;小洛克們一起來…

Linux禁止用戶登錄

轉載鏈接&#xff1a;http://blog.sina.com.cn/s/blog_4cebadd10100a9bl.html 我們在做系統維護的時候&#xff0c;希望個別用戶或者所有用戶不能登錄系統&#xff0c;保證系統在維護期間正常運行。這個時候我們就要禁止用戶登錄。 1、禁止個別用戶登錄。比如禁止lynn用戶登錄…

.NET常用功能和代碼[總結與收藏]

1. 打開新的窗口并傳送參數&#xff1a; 傳送參數&#xff1a;response.write("<script>window.open(*.aspx?id"this.DropDownList1.SelectIndex"&id1"...")</script>") 接收參數&#xff1a;string a Request.QueryString(&q…

topcoder srm 305 div1

problem1 link 直接按照題意模擬即可。 import java.util.*; import java.math.*; import static java.lang.Math.*;public class UnfairDivision {public int albertsShare(int[] assets) {final int nassets.length;for(int i1;i<n;i) {assets[i]assets[i-1];}int result0…

動圖演示23個鮮為人知的VSCode快捷鍵

原文地址&#xff1a;https://dev.to/devmount/23-lesser-known-vs-code-shortcuts-as-gif-80盡管我在VS Code中經常使用許多快捷方式&#xff0c;以下快捷方式可能會派上用場&#xff0c;但我經常忘記它們的存在。我制作了一些GIF&#xff0c;以便更好地記住它們。也許這里面也…

使用C語言進行面向對象的開發--GObject入門[5]

轉載請注明出處 blog.csdn.net/pingf0 或www.cnblogs.com/pingf 接上文這一部分簡要介紹下類的析構&#xff0c;或者成為終結。還是多說幾句&#xff0c;也算是對前文的補充1.生成一個類是由父到子&#xff0c;析構的時候自然與之相對是由子到父。2.GObject的內存管理并沒有采用…

python結課報告_Python數據分析課程到底是學什么內容的?

2020年12月4日&#xff0c;博為峰旗下學掌門召開了《Python 商業(大)數據分析師》新課程發布會。據悉&#xff0c;此次發布會上發布的《Python 商業(大)數據分析師》課程是在原《數據分析師》課程上進行了全面升級。在發布會上博為峰副總經理王琰表示&#xff0c;在未來學掌門作…

linux禁止root用戶直接登錄sshd并修改默認端口

轉載鏈接&#xff1a;http://jingyan.baidu.com/article/a681b0de3a657c3b184346d9.html linux最高權限用戶root&#xff0c;默認可以直接登錄sshd。為了提高服務器的安全度&#xff0c;需要對它進行禁止&#xff0c;使得攻擊者無法通過暴力破解來獲取root權限。 1,新建一個用…

面試官問:能否模擬實現JS的bind方法(高頻考點)

可以點擊上方的話題JS基礎系列&#xff0c;查看往期文章寫于2018年11月21日&#xff0c;發布在掘金閱讀量1.3w前言這是面試官問系列的第二篇&#xff0c;旨在幫助讀者提升JS基礎知識&#xff0c;包含new、call、apply、this、繼承相關知識。面試官問系列文章如下&#xff1a;感…

推薦一個ASP.NET的資源網站

推薦一個ASP.NET的資源網站&#xff1a;ASP.NET屋-專業的ASP.NET學習,ASP.NET源碼,ASP.NET演示,MVC,Silverlight,JQuery,EXTJS,軟件設計網站 http://www.aspx58.com.cn/ 轉載于:https://www.cnblogs.com/yuyichen/archive/2009/11/26/1611682.html

連續投影算法_中航國畫榮獲“2020 IAV國際視聽嘉年華” 大屏幕投影顯示行業三大獎項!...

近日&#xff0c;“2020IAV國際視聽嘉年華”在深圳灣創新生態園隆重舉行&#xff0c;航空工業上電下屬子公司中航國畫作為2020年迪拜世博會中國館官方合作伙伴應邀參加此次高峰論壇&#xff0c;并在展會期間憑借4K系列雙色激光工程投影機、LP160UL系列超高亮度雙色激光工程投影…

Linux 系統備份恢復工具 SYSTEM-RESCUE-CD 的使用

測試系統&#xff1a;linux-debian 備份系統 1、插入dd有systemrescuecd-x86-4.0.1.iso的系統備份恢復U盤&#xff1b; 2、開機按DEL進入BIOS&#xff0c;設置BOOT為USB-HDD啟動。Save&Exit&#xff1b; 3、進入備份恢復系統界面&#xff1a;----------------------------…

CMDB功能分析與實現方案

CMDB功能分析與實現方案 CMDB系統的主要功能 1.用戶管理,記錄測試,開發,運維人員的用戶表 2.業務線管理,記錄業務的詳情 3.項目管理,指定此項目屬于那一條業務線 4.應用管理,指定此應用的開發人員 5.主機管理,記錄主機管理員,連接的網絡設備,存儲,云主機,物理主機等信息 6.主機…

感冒

看好這個網頁&#xff0c;你的感冒就好了轉載于:https://www.cnblogs.com/baoguo/archive/2009/11/27/1612308.html

python numpy矩陣索引_Numpy中的矩陣索引

索引后查看形狀&#xff1a;In [295]: Anp.matrix([1,2,3])In [296]: A.shapeOut[296]: (1, 3)In [297]: A[0]Out[297]: matrix([[1, 2, 3]])In [298]: A[0].shapeOut[298]: (1, 3)這種行為的關鍵是np.matrix始終是2d&#xff0c;所以即使選擇一行(A[0,:])&#xff0c;結果仍然…

他的前端焦慮:30歲以后的前端路怎么走? 你想過嗎~

馬云曾說&#xff0c;員工的離職原因很多&#xff0c;唯兩點最真實&#xff1a;一是錢&#xff0c;沒給到位&#xff1b;二是心&#xff0c;委屈了。當時間來到了年末&#xff0c;離職、跳槽、年終獎又成了年終熱詞&#xff0c;而此時辭職好似成為了一場勇敢者的游戲&#xff0…