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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:# e" [1 [) O: ~1 u
  1. #include5 O  o* U6 u% @9 U: Y% _- t
  2. #include
    & g; O. f0 Z2 S; t, ?& z; F
  3. #include8 f, T. _# b" F: C6 w, o* S8 ?) ~
  4. #include
    2 b5 ~: R' D+ g* `
  5. #include9 z  C, t! `: N4 v! h9 i2 N: f) h
  6. #include
    ( ~8 q7 D( ?  u; K8 \5 h1 V
  7. #include
    ' h8 N: U- R. o' z# X1 {& A
  8. #include
复制代码
+ h% R: d0 z; ]8 ~- A, ~$ j
8 d' W, D( ^, f( H& ~' J
服务器代码如下:
2 ^3 |* `& @  t
  1. #include
    ' G" k6 S( r4 b8 S7 H! F
  2. #include
    . E  q# o" G- H  \+ a4 w- E
  3. #include3 O5 X: g: k, y! ?& d
  4. #include
    : t8 S$ L( G7 w& m
  5. #include
    # V8 o% \6 G6 Z! H0 T7 ]2 G
  6. #include
    / w  [) S% n* T$ r& s  c  r: x
  7. #include
    5 t5 @$ m" \1 s& Q" y# d7 S
  8. #include
复制代码
2 Q- n' c* Z; F$ @! ]
6 v5 {) G/ w& M# F

) w  V! J' R  I( a, @4 }- x

5 C3 A, v% m3 A1 p( ]" s$ `
0 a" x+ w! z5 s
9 g- F, N/ @# D$ G
: n) c3 h7 F. w7 Z+ `

2 {: i: K1 J' P0 |3 R7 p- q* U6 r; F  E& |

% g8 G& b, F* z6 f* [7 N+ J/ M( k1 \( P: }9 G* a9 V

1 U. V) n& J. J0 i2 m4 x  m# x: ]0 d* X7 C3 F5 O! |' Z) \* Z8 X

; ^% Y& o: R; r% r( k) Y; C2 Y/ F
. H# @2 [; V$ B5 C

+ `* e# H% t" n
$ Q" s% D4 V$ v4 |+ R
. U$ U) D: E5 ~8 P2 ^2 u

. f6 `: r6 z' O* O9 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
& r* U# i" y) T3 D#include <sys/types.h> % o' P8 A6 [( H& F
#include <sys/socket.h> 7 w  k# d2 u' y) r9 }, e7 Q
#include <unistd.h> ) _- J& J8 O% y, {5 H% O& e
#include <netinet/in.h> ( r7 W# H. j4 h9 c; Z( O8 r" S
#include <arpa/inet.h> ; I! D. W/ t3 n- C
#include <string.h> 
2 h4 q( c3 d1 j) _4 p  V#include <stdio.h>  
1 W/ F. q- H/ k. R6 h3 fint main() {
" T4 L8 V( S' V$ Q# w  V5 g) M        int sockClient;
4 |+ p( ^8 t' l* b) }/ z        struct sockaddr_in addrSrv;' J' @+ T- y# @( @9 j* d. K* a
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
9 v3 z6 Q$ @& N5 H7 e. Y* {5 j+ w        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");3 h9 c' `4 O$ s! i2 K, x2 C2 L
        addrSrv.sin_family=AF_INET;
' M/ ^4 |3 W! q        addrSrv.sin_port=htons(6000);) U9 s  Q! O6 a4 V
        while(1)+ u5 d0 ], s5 K$ v7 l' ?
        {
! h! x2 L+ ]/ q( _5 A8 l                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));1 D( o% g' f2 |6 W  f$ s0 Z* M
                sleep(2);7 k  S! x8 z) Z5 J1 ~2 ~; J- C% d
        }    5 D$ \8 U- x) S: N! C! h& Y
        close(sockClient);  
+ ]8 c3 U" q6 K3 K        return 0; ( X1 ]/ \% M% H2 l8 M+ D& q
}
- V8 k4 q/ p+ u7 A# a; E; e0 I) h" i9 q7 B+ y
6 q! B6 c1 }. ?/ C
客户端:
  1. #include <stdio.h> 
    % y! F6 s: i6 _/ B) O& [
  2. #include <sys/types.h> + q7 s3 m' @  o+ k
  3. #include <sys/socket.h> * T$ M6 {5 u, I/ ]" G! z
  4. #include <netinet/in.h> 
    8 ^4 {- f7 O* C2 e2 O$ [! @# |" M8 H
  5. #include <arpa/inet.h> 5 i5 \1 A8 P3 v5 K6 l7 ^$ J
  6. #include <string.h> 1 y3 m1 @* g" |7 `7 B3 u
  7. #include <unistd.h> 
    9 s+ j2 G3 V, @$ r
  8. #include <fcntl.h> 
    & U. A, I$ d& [) w
  9. #include <sys/time.h> 
    + @8 o7 s0 I( D
  10. #include <sys/select.h> 
    1 G( w" J2 r: o2 f
  11. #include <sys/ioctl.h>  : z) n& u3 ~1 K) M
  12. int main() {; I6 J0 V0 ~+ Z5 Z# G4 e' z3 B
  13.         int sockSrv;
    ) U& `$ U3 X8 ]  S
  14.         struct sockaddr_in addrSrv;
    + L: \2 b% M% C2 ^! S' g
  15.         int len;7 ~: y, {; L" s6 p6 v- u
  16.         char recvBuf[100];" h; x9 Q( j9 q- Z; {
  17.         scanf("%s",recvBuf);
    ' |& E9 t) k' E) s, N3 R* F0 v0 B' M2 y
  18.         struct sockaddr_in addrClient;) B, ]# ~) ~# ]2 ]: p
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);" q  {$ e) r6 y6 Z" S# O" J  n: x
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    ) {$ U6 M% f( p5 P
  21.         addrSrv.sin_family = AF_INET;
    9 E7 c3 w% u: T) I) Z; l
  22.         addrSrv.sin_port = htons(6000);
    9 N8 I9 G9 H- F" ?. [. a5 t9 \
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));3 t( R; i, \, q9 h8 [) S, P8 A/ j5 h6 S
  24.         len = sizeof(struct sockaddr);
    / c. m/ k! S9 R) S% _
  25.         memset(recvBuf, 0, 100);% Z8 |( w' v# T# l2 J
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);# m& s1 r' y# R* f: @7 [0 s5 C" G
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));: R9 W- E, T4 k, u  m- _7 d8 {  x
  28.         printf("Client data is:%s\n",recvBuf);
    + q! o0 @1 S+ t; v5 `/ k
  29.         close(sockSrv);
    % s- m, ]5 A! l, f+ U! D
  30.         return 0;- x. s8 r( _0 ^" j' c+ ^) f
  31. } 
复制代码
' w" E0 U6 i, w; t5 A, X

& I$ f7 F* l7 O
3 Y8 t; r% t1 q# a% t& ?) Q2 z
. t9 ]9 d7 S$ t) U& _( j# N
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 15:53 , Processed in 0.109092 second(s), 21 queries .

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