Socket的简单使用

注意;这里是封装出来一个工具类 创建类方法来实现客户端和服务端的socket的创建 和 分别的一些必须实现的方法

socket 通信需要一个客户端和一个服务端

客户端和服务端都得有一个socket (类似于用于通信的手机)int socket的方法

服务器端要做的操作有: 1.创建socket 2.绑定一个众所周知的地址(bind)3.处于监听状态 (listen) 4.随时处于接受请求,作出响应,accept 5.接受信息 recv

客户端要做的操作的有;1.创建socket 2.实现链接(connect)3.发送信息 send

使用socket时 要导入头文件

#import <netdb.h>

#import <arpa/inet.h>

#import "Socket.h"

@implementation Socket

//封装出类方法 创建服务端

+(void)serviceWithport:(int)port with:(Myblock)block{

dispatch_queue_t globel = dispatch_get_global_queue(0, 0);

dispatch_async(globel, ^{

//        1.创建服务端的socket

int  serviceId =  socket(AF_INET, SOCK_STREAM, 0);

if (!serviceId) {

NSLog(@"socket error");

return;

}

//    2.进行绑定地址

//        2.1创建地址的结构体

struct sockaddr_in addr;

//        2.1.1初始化创建的结构体

memset(&addr, 0, sizeof(addr));

//        2.1.2设置ip地址参数

addr.sin_family = AF_INET;

//        2.1.3设置ip端口

addr.sin_port = port ;

addr.sin_addr.s_addr = htonl(INADDR_ANY);

int blindId = bind(serviceId, (struct sockaddr*)&addr, sizeof(addr));

if (blindId == -1) {

NSLog(@"bind error");

return;

}

//    3.实现监听

int listenId = listen(serviceId, 10);

if (listenId == -1) {

NSLog(@"监听失败");

return;

}

//        4.实现响应  //创建一个while 可以多次接受客户端的访问

while (1) {

int acceptid =  accept(serviceId, NULL, NULL);

//        5.接收信息

//        5.1创建一个字符串数组

char str[1000];

long recvId =  recv(acceptid, &str, 1000, 0);

if (recvId) {

block(str);

}

NSLog(@"str = %s",str);

}

});

}

+(void)clientWithPort:(int)port address:(NSString *)address msg:(NSString *)msg{

dispatch_queue_t globel = dispatch_get_global_queue(0, 0);

dispatch_async(globel, ^{

//    1.创建socket

int clientId = socket(AF_INET, SOCK_STREAM, 0);

if (!clientId ) {

NSLog(@"socket error");

return ;

}

//   2.进行连接

struct sockaddr_in addr;

memset(&addr, 0, sizeof(addr));

addr.sin_port = port ;

addr.sin_family = AF_INET;

//      将oc字符串地址转换成字符串

const char *str = [address UTF8String];

inet_pton(AF_INET, str, &addr.sin_addr);

//        连接connect

int connectId = connect(clientId,(struct sockaddr*) &addr, sizeof(addr));

if (connectId == -1) {

NSLog(@"connect error");

return;

}

//        将oc 字符串信息转换成C字符

const char *str2 = [msg UTF8String];

//        发送信息

send(clientId, str2, sizeof(str2), 0);

close(clientId);

});

}

@end

时间: 2024-10-18 15:08:47

Socket的简单使用的相关文章

用Socket来简单实现IIS服务器

刚刚接触ASP.NET编程,为了更好的屡清楚服务器的处理过程,就用Socket模拟服务器来处理请求.用Socket来模拟服务器的时候,同样是自己来封装一些对应的类文件.包括 HttpRequest.HttpResponse.HttpContext.HttpApplication.IHttpHandel.主要的执行流程是:先用Socket来创建一个简单的服务器,进行监听,当监听到请求后将请求交给处理程序去处理,应用程序中根据请求的是静态资源还是动态资源做出不同的处理.然后通过Socket对象将响应

关于Socket编写简单聊天工具的总结(原创)

这段时间再看socket编程,虽然现在是刚刚接触,但是还是忍不住想写一篇总结,来激励自己努力学习,写的不好的地方,还请大家指教啊! 下面针对一个简单的发送消息和文件的程序说说吧.   首先是服务器需要准备二个Socket和二个Thread如下: //和客户机进行通信 private Socket sckCommit; //监听客户机 private Socket sckListen; private Thread thdListen; private Thread thdCommit; 对客户机

运用socket实现简单的服务器客户端交互

Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其英文原意

Socket实现简单Web服务器

上一篇博客中介绍了怎样使用socket访问web服务器.关键有两个: 1)熟悉Socket编程: 2)熟悉HTTP协议. 上一篇主要是通过socket来模拟浏览器向(任何)Web服务器发送(HTTP)请求,重点在浏览器端.本篇博客则反过来讲一下怎样使用socket来实现Web服务器,怎样去接收.分析.处理最后回复来自浏览器的HTTP请求. HTTP协议是浏览器和Web服务器都需要遵守的一种通信规范,如果我们编写一个程序,正确遵守了HTTP协议,那么理论上讲,这个程序可以具备浏览器.甚至Web服务

基于socket的简单网络程序设计

基于socket的简单网络程序设计 1.实验目的与要求: (1)初步掌握TCP和UDP方式的网络编程模式. (2)能运用Winsock提供的API函数接口进行网络程序的编写. 2.实验准备和说明: (1)要求掌握流式和数据报socket的编程模式和实现. (2)创建本次实验工作文件夹"-\实验\实验4". 3.实验内容与步骤:       1)工程的创建 在VC6里边新建一个工程,选择:Win32 Console Application,输入工程名.具体方法:启动VC6.0,进入[文件

java Socket实现简单在线聊天(一)

出处:http://blog.csdn.net/tuzongxun 最近的项目有一个在线网页交流的需求,由于很久以前做过的demo已经忘记的差不多了,因此便重新学习一下. 我计划的大致实现步骤分这样几大步: 1.使用awt组件和socket实现简单的单客户端向服务端持续发送消息: 2.结合线程,实现多客户端连接服务端发送消息: 3.实现服务端转发客户端消息至所有客户端,同时在客户端显示: 4.把awt组件生成的窗口界面改成前端jsp或者html展示的界面,java socket实现的客户端改为前

Socket的简单例子

服务器端 using System;using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Sockets;//Socket相关的类 namespace ChatServer { class Program { static void Main(string[] args) { /

使用socket实现简单聊天室

通过socket实现简单的聊天室 1.服务端代码:serverselect.py #!/usr/bin/env python #coding:utf8 import socket import select class SelectServer(object): def __init__(self,host,port,backlog): self.host = host self.prot = port self.address = (host,port) self.backlog = back

[python网络编程]利用socket编写简单的服务器

利用socket编写简单的服务器 步骤解析 建立socket对象 这一步跟我们上次使用socket做客户端是一样的,都需要有一个socket连接 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 设置socket选项(setsockopt) 选项介绍setsockopt(set socket option),参数设置格式:setsockopt(level,optname,value) 各选项的关系:1.level:level的设定决定了op

django简介,安装,文件介绍,三板斧(render,HttpResponse,redirect)HTTP协议,用socket实现简单版web框架,用wsgiref,jinja2,pymysql实现Django运行流程

1.web应用(https://www.cnblogs.com/Dominic-Ji/p/9167438.html) c/s,b/s架构c/s:客户端 服务端b/s:浏览器 服务器?   2.HTTP协议: 超文本传输协议 四大特性: 1.基于TCP/IP作用在应用层之上的协议,底层实现仍为socket 2.基于请求响应:通信一定是从客户端开始,服务器端接收到客户端一定会做出对应响应 3.无状态:协议不对任何一次通信状态和任何数据做保存 4.无连接:一次连接只完成一次请求-响应,请求-响应完毕后