[[https://serverfault.com/questions/124517/whats-the-difference-between-unix-socket-and-tcp-ip-socket/124518#124518|Unterschied UNIX Socket/TCP Socket]]
[[http://www.c-worker.ch/tuts/wstut_op.php|C-Worker Sockets]]
[[https://www.tobscore.com/socket-programmierung-in-c/]]
* {{grundlagennetzwerkprogrammierung.pdf}}
* {{rfcommsockets.pdf}}
* {{bluetooth_for_developers.pdf}}
=====Socket in C=====
Siehe [[coding:c|C]]
server .c
#include
#include
#include
#ifdef _WIN32
#include
#include
#else
#include
#include
#include
#include
#include
#include
#endif
int main(void) {
#ifdef _WIN32
SOCKET sock, fd;
WSADATA wsaData;
WSAStartup(0x102,&wsaData);
#else
int sock, fd;
#endif
struct sockaddr_in server, client;
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(8080);
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(sock, (struct sockaddr*)&server, sizeof( server));
listen(sock, 5);
unsigned int len;
fd = accept(sock, (struct sockaddr*)&client, &len);
char buffer[1024];
if( (len = recv(fd, buffer, 1024, 0)) > 0) {
printf("%s\n", buffer);
send(sock, buffer, strlen(buffer), 0);
memset(buffer, 0, 1024);
}
return 0;
}
client.c
#include
#include
#include
#ifdef _WIN32
#include
#include
#else
#include
#include
#include
#include
#include
#include
#endif
int main(void) {
#ifdef _WIN32
SOCKET sock, fd;
WSADATA wsaData;
WSAStartup(0x102,&wsaData);
#else
int sock, fd;
#endif
struct sockaddr_in server;
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_port = htons(8080);
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
connect(sock, (struct sockaddr*)&server, sizeof(server));
char buffer[] = "Hello world";
send(sock, buffer, sizeof(buffer), 0);
unsigned int len;
if( (len = recv(sock, buffer, 1024, 0)) > 0) printf("%s\n", buffer);
return 0;
}
Um eine Verbindung zu verarbeiten ein multithreaded_server.c
#include
#include
#include
#ifdef _WIN32
#include
#include
#else
#include
#include
#include
#include
#include
#include
#endif
#ifdef _WIN32
void process_thread(SOCKET s) {
#else
void process_thread(int s) {
#endif
char buffer[1024];
memset(buffer, 0, 1024);
int len;
while( (len = recv(s, buffer, 1024, 0)) > 0 ) printf("%s\n", buffer);
}
int main(void) {
#ifdef _WIN32
SOCKET sock, fd;
WSADATA wsaData;
WSAStartup(0x102,&wsaData);
#else
int sock, fd;
#endif
struct sockaddr_in server, client;
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons(8080);
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(sock, (struct sockaddr*)&server, sizeof( server));
listen(sock, 5);
unsigned int len;
char buffer[1024];
#ifdef _WIN32
DWORD thread;
#else
pthread_t thread;
#endif
while(1) {
fd = accept(sock, (struct sockaddr*)&client, &len);
if(fd<0) continue;
#ifdef _WIN32
if(!CreateThread(NULL, 0, process_thread, fd, 0, &thread)) continue;
#else
if(!pthread_create( &thread , NULL , process_thread , fd)) continue;
#endif
}
return 0;
}