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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
0 e& m/ `3 K( ]$ ?* Y
  1. #include
    " ~0 o8 ~: E, J) X9 l
  2. #include
    1 F5 f) I4 L9 n  z* ~. v: \2 X6 d
  3. #include
    . [+ ]2 M! \8 k* j) C! a; y
  4. #include
    6 T( g3 t4 I) P& Q, A
  5. #include
    3 e' U$ G  ~8 a- y( X
  6. #include+ y2 n6 g# M9 E. O% N/ D
  7. #include5 ~6 I7 J( m* a( o- \" l8 l
  8. #include
复制代码
+ [! E) {( L& V1 m" t0 G' c

  v4 a: |7 p, `5 Q4 G/ h/ N/ {$ @服务器代码如下:
3 R- |% g. Z% q1 f+ M
  1. #include5 q& T0 }" g: P6 o
  2. #include* N* z* Q/ N! ^! ]3 h! V
  3. #include
    / ^' ^# P7 e! [( n6 Q
  4. #include
    & h% ^' G3 [) Q- K. `3 f+ ^) U
  5. #include
    ( W; s! b) T' U/ g8 X% H
  6. #include& {* w) V. K* x
  7. #include3 c! @; W% J" L: i  H+ ~3 ^+ }
  8. #include
复制代码
6 ?* I. W. b0 a- B6 e  z2 E+ ^

! i0 q# g7 W  z, G5 U* x% Z7 \, j& |1 I4 c0 P, D
2 j5 Z, Z6 p* u

+ F! z7 `) b; q6 j: F/ p0 u

7 L0 u- b" I& E5 }
- F- q. E& s7 l: N
& B; {1 c9 P( d9 r
6 W' p- P1 U6 N" f; [  H
9 @6 B# N( E3 t3 B" [) k2 W

' K8 T# @- |8 |: h" ^& K
* Z* p, B" y! O$ z9 a4 \

( G& ]- }+ h+ i! H2 ~4 r- r' B3 s$ Y

: k! n; r" W: h  A2 i2 W! Q- s4 r; E& Y: w& g3 N9 j9 h
& m; c& u( x1 e- R

( B3 w9 P# q. J! U

& C2 i( T& U2 I# j+ @, N' l$ v$ h9 R" k2 R

, @, K( w0 t6 B3 i0 j  p7 }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:; y3 V& R+ s; z9 J; M; i
#include <sys/types.h> " s) Q5 M6 q/ R5 L6 x: j# q
#include <sys/socket.h> 
" v; O: e( _$ u! P. }; S#include <unistd.h> + n9 D5 W% b2 ~/ |* E
#include <netinet/in.h> 
5 `( ~4 w3 K7 [/ I#include <arpa/inet.h> 8 v2 o1 O+ g" z; C9 ~) M# T# @/ e
#include <string.h> 6 q4 Y/ ?5 n; n5 [
#include <stdio.h>  
  n: G' d/ s4 ?6 gint main() {- F" w. O; i3 X' g+ f3 k
        int sockClient;
2 X/ g  i7 Q$ x        struct sockaddr_in addrSrv;; g: X0 }' e* w% U- ]% j8 ~$ t* |
        sockClient = socket(AF_INET,SOCK_DGRAM,0);% W) Q5 U* V' W9 W6 o) `
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");, {. _* I9 ?" Z9 f
        addrSrv.sin_family=AF_INET;
/ e9 U" l1 c7 W6 F' o+ P3 l4 u- v- Z: b        addrSrv.sin_port=htons(6000);. g( J  T! k/ n( X% \4 d- R
        while(1)
5 |9 C" s  B5 q        {& B/ ^; n3 B; O9 a
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
' o- y% y( I$ T                sleep(2);
' p/ `" f5 @! ]: o0 }        }    / s5 s- ?4 O8 F  p; v/ _& U: l
        close(sockClient);  0 O! O7 y$ W4 Z6 A6 X
        return 0; 1 I1 t5 m6 w. Z  D# l# o3 S7 X
}/ ]: u( ?  [) _5 ]
- E" O5 j) Y) @9 e; K# u

* G2 e, l! W' l. |7 F  d6 z客户端:
  1. #include <stdio.h> 
    ) C7 o2 _7 r: L! [) [9 u, ^  B+ q
  2. #include <sys/types.h> , H/ E) Y, b8 }
  3. #include <sys/socket.h> ; X: B( W; y: e( I! q! @
  4. #include <netinet/in.h> ) Z8 a+ a' o* t# i% h- Z
  5. #include <arpa/inet.h> 
    7 c6 k* t5 l) |6 m; @1 R
  6. #include <string.h> 
    6 ^9 {* J4 a! J/ E" {6 d8 E
  7. #include <unistd.h> 
    , z) J/ d( G- Q/ |# S$ C2 R
  8. #include <fcntl.h> 
    $ n  m8 R/ R! F" p
  9. #include <sys/time.h> # c( l% W- w+ m4 B5 k' x/ O
  10. #include <sys/select.h> 8 D, P8 o# [; ]: ~3 f; B; L
  11. #include <sys/ioctl.h>  # B6 f* f5 P7 H7 @
  12. int main() {
    # I$ `  j, g  Q- h
  13.         int sockSrv;
    ' Q9 b% H# G% Q* E
  14.         struct sockaddr_in addrSrv;
    / r% n! C9 ^# U2 p) h1 S+ e- L% t
  15.         int len;
    2 R5 w1 s  K0 f" Z$ C  {! w1 d9 F
  16.         char recvBuf[100];
    * o7 W7 p; o$ [* `! `
  17.         scanf("%s",recvBuf);. r) f' q8 V: e$ e; a
  18.         struct sockaddr_in addrClient;  p# z* M% ?  o9 `* e
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);: F1 O* Z8 H( c" u: B  C# v! d
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);% u7 S9 p# X6 a1 T. y# f( z; V9 H
  21.         addrSrv.sin_family = AF_INET;
    / |. z% {4 J- O3 b; b& f9 y
  22.         addrSrv.sin_port = htons(6000);
      [' b$ Q% G; |/ X) ^
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    # d9 `- ^: {1 J
  24.         len = sizeof(struct sockaddr);8 i+ O8 I& Y( t5 B
  25.         memset(recvBuf, 0, 100);
    4 ^% E5 \! g7 [, H9 o( B
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    ) [) J3 N4 {' N1 F& d
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    ( z: G* e$ Q1 a8 v' U& P! @
  28.         printf("Client data is:%s\n",recvBuf);# d) C6 y! `5 A8 o$ [
  29.         close(sockSrv);
    ' c0 N9 E' I0 _, q% r- ^2 k
  30.         return 0;
    & g3 Q' |( B0 w
  31. } 
复制代码

& \/ U5 I" ?  F9 Y6 B& Q  j9 M  K7 l9 ~; W+ O5 t( x
0 b" M3 d) B9 U0 m4 D* D2 d
( a$ J2 \& L+ n$ r" K9 B) @
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-5-2 11:46 , Processed in 0.074335 second(s), 18 queries .

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