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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
; h1 P/ `- Q( F  E8 B
  1. #include$ P7 g1 ]- j7 l  r% x: q3 R/ e; l2 Q
  2. #include" a/ U% }, R# `7 ]. ^$ E1 A. k& H
  3. #include  I9 H: H+ Q% W% d: `% C8 U
  4. #include
    . h% I+ {/ n4 q, I$ X$ Y
  5. #include
    , Z/ {& X6 |) R
  6. #include' l0 w8 i9 d! T3 o1 _9 J! I
  7. #include! \, ^# @6 i+ Y* x4 `: {
  8. #include
复制代码

2 R8 {* w6 N. Y3 _2 H
/ g! p5 S0 @6 G6 E+ ]- \8 m- g服务器代码如下:
0 @( L% n$ X4 X9 ~
  1. #include5 f8 `3 D# P0 Y$ c3 x# U% N
  2. #include
    / h) V  K5 V( p
  3. #include* J% J$ p% v8 R5 K
  4. #include' l2 j$ E: u0 g3 i; {
  5. #include
    7 u3 `7 s& v2 ~1 y
  6. #include
    $ Y6 C- F9 A* `" ]' Q2 f
  7. #include
    5 e+ C3 n. W( o% C
  8. #include
复制代码

6 b; y' @& [' Z( K' `3 k
9 U9 j) [- h4 d& J: N/ }/ q. O
: c% g0 Y/ j4 K" `9 e' A
! h4 ]* ^$ ^+ e$ Z& b( D
9 O" T+ j& A1 x
/ P! k+ w) _6 o, t

) @* h, D: N! F

, Z, B9 o( V) I! l+ C
: N( y0 u+ x9 t

. o: t/ z9 l% K3 ?0 ?
7 C2 f) n( k/ ~. P; N# R( E5 V8 y; u/ L

0 t  V/ X5 g' l. j
5 D  x6 W8 i3 y/ k7 L4 {

) V) D# I# s0 P( W+ _7 j) x; }3 _- c3 x5 z" L' {, ]* {
) ^( ~" U  F5 N: K' p' L; N9 g  m
/ c0 N( q$ ^' F% }! Z

7 w4 q6 n( R7 S" i" D: k4 B6 b7 m- i% {. C0 [8 k% T# G$ T* N" |
2 |, \) w* A6 T8 R& K0 ~$ o4 @/ p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:, Q7 }: C, G$ @; [& M  t
#include <sys/types.h> 
7 Q( |+ s+ i; Q4 [% E' `! i: K#include <sys/socket.h>   U3 ]/ `! G: `/ s
#include <unistd.h> 
$ H% I! W  I# n" Y6 ?/ u: }+ ~#include <netinet/in.h> 
: v, Q7 W$ k) D#include <arpa/inet.h> 
9 s% S; a9 f: K) I4 W0 H#include <string.h> 2 f* @: k! m0 V. K( I' [
#include <stdio.h>  # W: z* l6 p7 r  R2 ^# B
int main() {. `1 [) y7 \. s- C
        int sockClient;
- Q' ~, y% m- p. N0 X        struct sockaddr_in addrSrv;2 k( X' H$ f& |) q- R6 F- I$ k1 Z
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
7 _, w  Y2 u! J1 Q        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
+ q6 A  A( [! P0 F: V% X" T' o, G        addrSrv.sin_family=AF_INET;( i, l  Q( U" l  K  o# H" x2 ?
        addrSrv.sin_port=htons(6000);
6 g' Y5 `" A( ]' b        while(1)* i4 Q8 t5 ?1 K6 b
        {
. w7 p# L! Z. Q                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));: M; d) `- A. |, m: K( M
                sleep(2);
! C2 w7 s4 \. D2 q3 j8 D        }    8 r! j* V. f3 {2 |5 D
        close(sockClient);  
1 d# n6 ^6 ]$ U& S( @4 J9 M/ E        return 0; 
8 i" S' s5 ~' [6 v+ L( ?6 h$ r}
( x8 a/ j$ U& {. s4 B6 S2 l* A* c7 H3 ]
% M& L  v- w5 P
客户端:
  1. #include <stdio.h> 
    " L, G: S2 o8 w" I8 q* L
  2. #include <sys/types.h> ! P) U( A* ?% t- b5 _# T. J
  3. #include <sys/socket.h> 
    3 q" J% K  f9 K6 t# f& M  A
  4. #include <netinet/in.h> 9 c# t9 ^& i0 j& u; l- r: m3 {6 l
  5. #include <arpa/inet.h> ( p$ m- c4 U& G5 b, S
  6. #include <string.h> / J) ~3 e; }) t% o
  7. #include <unistd.h> 3 Y& N0 {$ q! [. K( A) V
  8. #include <fcntl.h> 0 s2 t. E6 o9 o5 w" I2 L
  9. #include <sys/time.h> 6 q" E. G( Y3 {- E! t, i+ l' O
  10. #include <sys/select.h> 3 l6 O# f/ Q$ a1 k, z
  11. #include <sys/ioctl.h>  
    0 X) @# ~* [7 a7 z; j) U" O1 N
  12. int main() {
    * |8 B* z, _  J1 p  u
  13.         int sockSrv;- i3 `' V. ]5 A, A1 d  ?  O! K5 I
  14.         struct sockaddr_in addrSrv;
    , @8 x# W! y% R- z+ d+ ~6 G
  15.         int len;1 T6 a3 b* ^: i* U* C
  16.         char recvBuf[100];
    2 R0 T6 E+ _7 s$ ^, D  B& E
  17.         scanf("%s",recvBuf);
    % g$ G( v4 |) i) G" e& n& M$ v" A
  18.         struct sockaddr_in addrClient;4 i& f- b3 M* R  Y1 R1 U0 @7 }2 b! D6 k
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);! j$ W7 s( ~# A) v7 `
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);, n& c# W% [' J; |
  21.         addrSrv.sin_family = AF_INET;
    ! \3 Z2 h, Z, I  @& R1 y5 p5 j) c" Z
  22.         addrSrv.sin_port = htons(6000);
    * t5 L$ r7 Y7 j8 s5 A! ?8 y5 N
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));0 ?! P- F) a5 q0 Z
  24.         len = sizeof(struct sockaddr);8 p( n9 [' h. r/ x* |
  25.         memset(recvBuf, 0, 100);
    . d0 ]+ p+ c0 n& O
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    4 E: W$ ~# @  K
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    7 L* h0 o/ N: j3 ]' a2 f& Z
  28.         printf("Client data is:%s\n",recvBuf);" {4 b* A. P/ r8 V+ J
  29.         close(sockSrv);
    # t: C0 K1 T2 l( {
  30.         return 0;: ?( F9 Z) a5 W
  31. } 
复制代码

0 f& R( c0 Y5 Q0 H+ O' h" C* Q. F! ]( K7 A9 ^- l- f0 ~

6 g' z* q" C3 S2 S9 Z! k
& |* ?! J4 h' |& r% X
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 16:51 , Processed in 0.051443 second(s), 19 queries .

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