您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13892|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
& o( |  L1 y" E% r3 I0 i6 s# f) D
  1. #include* H# w/ Z+ B' Y, J
  2. #include
    ; u' I) W) }* a3 ]
  3. #include7 h# c+ Q8 N4 _1 \' }
  4. #include
    $ I$ i; v  n6 k
  5. #include/ H4 ~: u, e: E. k' Q+ F
  6. #include- C& u4 d2 j# H0 _, s" [
  7. #include# Q$ i+ f1 W3 I* l
  8. #include
复制代码
0 k. t6 X# z6 ^# b! {

+ q0 `( t4 A8 k服务器代码如下:& J; I5 `4 N: F& J
  1. #include  N0 a2 {, r7 ]; C- z2 `# k
  2. #include
    + w5 f4 f0 b5 k) `4 a2 N
  3. #include% Y6 A2 B8 P  C
  4. #include
    ) N$ I! C: P4 D, h/ x' ^
  5. #include
    , M/ @- i: m  l
  6. #include
    # r5 C$ n: [$ J& Z! |& G
  7. #include
    ) o- \5 K9 n" i
  8. #include
复制代码
- n; |8 O5 h2 V  A
: s: i) h* w( ]  D

' O$ e$ I: w) K$ W9 x$ h) f$ X9 o
2 r/ [5 _# k& d+ N3 x1 E3 [) k. ~$ S

* a. R  x- g+ o% H- D7 H

8 w. t/ U# Y& t1 V3 ?3 A5 S$ n

1 x0 e* w, G- m! [6 }% m5 f# c/ ?' W2 w8 S8 I5 ^& ^! b" X( A( v+ r

% C6 D# u# L( n8 _" Z" S. g* U
0 u+ B% x6 K" u* a

% ^3 [  t% ~. |" |- Q' x+ k& V* `+ C
3 z0 a2 k8 P3 F" d  e/ O3 o

8 Y9 U  S* R  z, T) o- W9 `2 c$ q* w! m: s  j# X: O( f

+ w! v1 V* o  ?: x$ I( e8 t+ r. ]
" w- ^% ^5 K# t% A) m7 n
. \# {9 @& t" L

% Q* M/ ]% b3 R, C2 {+ I
) P, z( {6 x* u; }( m) w- v2 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:* @  M# f: F8 f
#include <sys/types.h> 
) ?$ I: |2 s" o6 ^1 `#include <sys/socket.h> - O" p3 o! y: H
#include <unistd.h> * N+ i9 A6 T' k+ x& T
#include <netinet/in.h> 
+ ~/ q- [1 E: j#include <arpa/inet.h> 
  E: K( l3 o' @* U9 D% X# m#include <string.h> ' x# U8 p/ i7 f0 V0 ~7 n1 c
#include <stdio.h>  0 |" [! {' Q% L; o% `) G# b
int main() {- ~3 s# o2 g/ h4 F7 N1 _9 Z- r. ]
        int sockClient;
' g9 v7 P" i; T% A, f# b* W        struct sockaddr_in addrSrv;
9 q% j2 Y' y4 Z, B+ V% n        sockClient = socket(AF_INET,SOCK_DGRAM,0);
2 r2 z) K# i" Z: ^4 o$ u        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");0 v. p- G! t, {# i0 h" k( Y4 F
        addrSrv.sin_family=AF_INET;
) Z" j5 _8 e# d, c- j        addrSrv.sin_port=htons(6000);) ~2 O3 @* r5 f- J3 G  p
        while(1), B& E& i% J7 Y/ N. D
        {# E5 ]/ j9 i3 w- d# N4 V- a
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));1 }$ k& J6 P% J& d9 u% b% F. q3 @5 M( ?4 k& X
                sleep(2);) L7 R- z& C! D( k" ~' `/ Q+ ~
        }    1 N, x8 a3 L3 L  ^) @; ~7 ^1 y
        close(sockClient);  
- E6 Q. F7 z# ?3 q4 ^9 K, j. k        return 0; / L" w; \- m0 E; }7 x
}9 _+ |6 ~+ a, g8 w$ _
$ U+ G0 C& G2 i( Q) L
/ R, x$ r. _- h
客户端:
  1. #include <stdio.h> 
    % v0 P5 U8 {  m: p/ L: N1 G
  2. #include <sys/types.h> 
    0 c$ h# O4 o3 E6 e3 w; q
  3. #include <sys/socket.h> 9 w! H# y2 `: D% Z( E# u1 c
  4. #include <netinet/in.h> ; L/ i, L6 X0 n  E! d
  5. #include <arpa/inet.h> 
    % D, a$ l2 y& w" B9 }
  6. #include <string.h> # U9 q7 W8 y* |5 ^: _" s  {. Z
  7. #include <unistd.h> 
    - `" l  m7 `! J# I, V
  8. #include <fcntl.h> 2 J# ?4 o) m% y# C( [
  9. #include <sys/time.h> 
    / t! g* a1 a1 l
  10. #include <sys/select.h> 
    ; @# C' o6 a" l. u
  11. #include <sys/ioctl.h>  7 d$ b3 i6 |. w! Y8 ]
  12. int main() {1 ?! ~# G* ]1 u; Z, ~9 r
  13.         int sockSrv;8 i) `5 N) v( e9 F
  14.         struct sockaddr_in addrSrv;
    ' H* l+ _+ T+ y
  15.         int len;
    + {( Y+ Z& P% U) z, r* c
  16.         char recvBuf[100];9 c0 N7 ]! l' R7 ^. B0 T& O
  17.         scanf("%s",recvBuf);
    ; H* P6 w/ m4 }" ?) h3 f9 y
  18.         struct sockaddr_in addrClient;7 J: Q/ `6 j" N7 }
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    $ x- |" ~+ n1 g
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
      E; x1 I+ Y% v8 [# u# H
  21.         addrSrv.sin_family = AF_INET;
    8 I- W9 h+ [6 A; o" n
  22.         addrSrv.sin_port = htons(6000);
    * z! ^/ E2 T1 C* P! I
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));" J3 D4 R. N7 e" Q) D( ^; q4 ^5 o
  24.         len = sizeof(struct sockaddr);
    ( s$ P$ r! W2 I& K4 I
  25.         memset(recvBuf, 0, 100);
    8 X" f8 l; @; K8 P! t$ q/ H1 J( W
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    7 ]1 q/ L. v; o+ k1 ]
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));( }$ E0 h9 y) q4 H- P6 O( {
  28.         printf("Client data is:%s\n",recvBuf);5 M; t3 G8 |, N/ K3 e' o; l
  29.         close(sockSrv);0 j' g# E0 V% ?% x
  30.         return 0;
    4 Z+ ~3 v  V; C9 G$ u* s; N. Y
  31. } 
复制代码

. ^3 x! E& Q7 C1 H/ b* c( ~; h3 Q& @% h: x  B7 U3 F; i& v+ C

2 k8 }' F) j& E2 P1 ?# K
7 Z# f& X3 l- ^3 H8 n( f8 F
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 07:09 , Processed in 0.060968 second(s), 18 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!