Teknoloji Haberleri
DH
forum
mini
Uygulama ile
aç
Uygulama ile Aç
Giriş
Kayıt
DH Anasayfa
İndirim Kodu
Ara
Popüler
Foruma Git
Hakkımızda
Destek
Mobil Sürüm
Standart Site Görünümü
Bu Konuda
Tüm Forumlar
Web Tasarım - Programlama
Yazılım Geliştirme
Delphi / C++ /Vb
Bu Konuda
Bağlan:
Facebook
Google+
Twitter
Aşağı Git
Tüm Forumlar
Web Tasarım - Programlama
Yazılım Geliştirme
Delphi / C++ /Vb
YARDIM: socket ile chat??
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
3
Cevap
948
Tıklama
0
Öne Çıkarma
1. sayfa
YARDIM: socket ile chat??
Cevap Yaz
Konuya Özel
Linkli Mesajlar
Seçkin Yorumlar
M
muraty2
Cevapla
Özel Mesaj
Şikayet
Mesaja Link
Takip Et
18 yıl
Teğmen
Konu Sahibi
Arkadaşlar socket programlama ile çok kullanıcılı chat programı yazmaya çalışıyorum. Fakat programda bir kullanıcı mesaj yazmadan diğeri yazamıyor. Yani hep sırayla yazışmak gerekiyor, üstüste yazılamıyor. Bu sorunu nasıl çözebilirim?
kodlar şöyle:
Client.c
//-------------
#include <winsock.h>
#include <winsock2.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define DEFAULT_PORT 5150
int g_port = DEFAULT_PORT; // Port on server to connect to
char g_szServerName[128] = "10.0.1.37"; //"KRANDAXP"; // Server to connect to
int main(void)
{
WSADATA wsaData; // if this doesn't work
//WSAData wsaData; // then try this instead
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
fprintf(stderr, "WSAStartup failed.\n");
exit(1);
}
WSADATA wsd;
SOCKET sClient;
int ret, ch;
struct sockaddr_in server;
struct hostent *host = NULL;
char buf[1024];
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {
printf("Failed to load Winsock library!\n");
getch();
return 1;
}
//
// Create the socket, and attempt to connect to the server
//
sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sClient == INVALID_SOCKET) {
printf("socket() failed: %d\n", WSAGetLastError());
getch();
return 1;
}
server.sin_family = AF_INET;
server.sin_port = htons(g_port);
server.sin_addr.s_addr = inet_addr(g_szServerName);
//
// If the supplied server address wasn't in the form
// "aaa.bbb.ccc.ddd" it's a hostname, so try to resolve it
//
if (server.sin_addr.s_addr == INADDR_NONE) {
host = gethostbyname(g_szServerName);
if (host == NULL) {
printf("Unable to resolve server: %s\n", g_szServerName);
getch();
return 1;
}
CopyMemory(&server.sin_addr, host->h_addr_list[0], host->h_length);
}
if (connect(sClient, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) {
printf("connect() failed: %d\n", WSAGetLastError());
getch();
return 1;
}
printf("\a\a \n\t ---Yeni Baslayanlar icin Chat 1.0--- \n\t--A program by B&M Software ... Licenced--\n\n");
for (;;) {
buf[0]='\0';
printf("Me: ");
fgets(buf, sizeof(buf)+1, stdin);
if((send(sClient, buf, sizeof(buf), 0)) <= 0){ printf("Baglanti Koptu"); getch(); return 1; }
if((recv(sClient, buf, sizeof(buf), 0)) <= 0){ printf("Baglanti Koptu"); getch(); return 1; }
printf("Sunucu diyor ki: %s", buf);
}
closesocket(sClient);
WSACleanup();
getch();
return 0;
}
//------------------------------------------------------------------------------
server.c
//-------------
#include <winsock.h>
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#define DEFAULT_PORT 5150
int g_port = DEFAULT_PORT;
char g_szAddress[128];
int main(void)
{
WSADATA wsd;
SOCKET sListen,sClient;
int addrSize;
struct sockaddr_in local, client;
char buffer[1024],buffer2[1024];
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {
printf("Failed to load Winsock!\n");
return 1;
}
sListen = socket(AF_INET, SOCK_STREAM, 0);
if (sListen == SOCKET_ERROR) {
printf("socket() failed: %d\n", WSAGetLastError());
return 1;
}
local.sin_addr.s_addr = htonl(INADDR_ANY);
local.sin_family = AF_INET;
local.sin_port = htons(g_port);
if (bind(sListen, (struct sockaddr *)&local,
sizeof(local)) == SOCKET_ERROR) {
printf("Dinleme Hatasi: %d\n", WSAGetLastError());
return 1;
}
listen(sListen, 8);
printf("Dinleme Basladi, Yanit bekleniyor...\n");
for (;;)
{
addrSize = sizeof(client);
sClient = accept(sListen, (struct sockaddr *) &client, &addrSize);
if (sClient == INVALID_SOCKET)
{
printf("Baglanti Kabulu Hatasi: %d\n", WSAGetLastError());
break;
}
printf("istemci Kabul Edildi, istemci Adresi: %s:%d\n\a", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
for(;;)
{
for(unsigned long i=0;i<1000000000;i++){
printf("x");
buffer2[0]='\0';
if((recv(sClient,buffer2, sizeof(buffer2), 0) == -1))
{printf("x1");
printf("Baglanti Koptu!!!");
break;
}
printf("x2");
if(buffer2)
printf("\nistemci diyor ki: %s", buffer2);
printf("x3");
}
printf("\nBen: ");
buffer[0]='\0';
fgets(buffer, sizeof(buffer), stdin);
if (send(sClient,buffer, sizeof(buffer), 0) == -1){
printf("Baglanti Koptu!!!");break;}
}
}
closesocket(sListen);
WSACleanup();
return 0;
}
1. sayfa
Hizmet kalitesi için çerezleri kullanabiliriz, DH'yi kullanırken depoladığımız çerezlerle ilgili
veri politikamıza
gözatın.
kodlar şöyle:
Client.c
//-------------
#include <winsock.h>
#include <winsock2.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define DEFAULT_PORT 5150
int g_port = DEFAULT_PORT; // Port on server to connect to
char g_szServerName[128] = "10.0.1.37"; //"KRANDAXP"; // Server to connect to
int main(void)
{
WSADATA wsaData; // if this doesn't work
//WSAData wsaData; // then try this instead
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
fprintf(stderr, "WSAStartup failed.\n");
exit(1);
}
WSADATA wsd;
SOCKET sClient;
int ret, ch;
struct sockaddr_in server;
struct hostent *host = NULL;
char buf[1024];
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {
printf("Failed to load Winsock library!\n");
getch();
return 1;
}
//
// Create the socket, and attempt to connect to the server
//
sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sClient == INVALID_SOCKET) {
printf("socket() failed: %d\n", WSAGetLastError());
getch();
return 1;
}
server.sin_family = AF_INET;
server.sin_port = htons(g_port);
server.sin_addr.s_addr = inet_addr(g_szServerName);
//
// If the supplied server address wasn't in the form
// "aaa.bbb.ccc.ddd" it's a hostname, so try to resolve it
//
if (server.sin_addr.s_addr == INADDR_NONE) {
host = gethostbyname(g_szServerName);
if (host == NULL) {
printf("Unable to resolve server: %s\n", g_szServerName);
getch();
return 1;
}
CopyMemory(&server.sin_addr, host->h_addr_list[0], host->h_length);
}
if (connect(sClient, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) {
printf("connect() failed: %d\n", WSAGetLastError());
getch();
return 1;
}
printf("\a\a \n\t ---Yeni Baslayanlar icin Chat 1.0--- \n\t--A program by B&M Software ... Licenced--\n\n");
for (;;) {
buf[0]='\0';
printf("Me: ");
fgets(buf, sizeof(buf)+1, stdin);
if((send(sClient, buf, sizeof(buf), 0)) <= 0){ printf("Baglanti Koptu"); getch(); return 1; }
if((recv(sClient, buf, sizeof(buf), 0)) <= 0){ printf("Baglanti Koptu"); getch(); return 1; }
printf("Sunucu diyor ki: %s", buf);
}
closesocket(sClient);
WSACleanup();
getch();
return 0;
}
//------------------------------------------------------------------------------
server.c
//-------------
#include <winsock.h>
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#define DEFAULT_PORT 5150
int g_port = DEFAULT_PORT;
char g_szAddress[128];
int main(void)
{
WSADATA wsd;
SOCKET sListen,sClient;
int addrSize;
struct sockaddr_in local, client;
char buffer[1024],buffer2[1024];
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {
printf("Failed to load Winsock!\n");
return 1;
}
sListen = socket(AF_INET, SOCK_STREAM, 0);
if (sListen == SOCKET_ERROR) {
printf("socket() failed: %d\n", WSAGetLastError());
return 1;
}
local.sin_addr.s_addr = htonl(INADDR_ANY);
local.sin_family = AF_INET;
local.sin_port = htons(g_port);
if (bind(sListen, (struct sockaddr *)&local,
sizeof(local)) == SOCKET_ERROR) {
printf("Dinleme Hatasi: %d\n", WSAGetLastError());
return 1;
}
listen(sListen, 8);
printf("Dinleme Basladi, Yanit bekleniyor...\n");
for (;;)
{
addrSize = sizeof(client);
sClient = accept(sListen, (struct sockaddr *) &client, &addrSize);
if (sClient == INVALID_SOCKET)
{
printf("Baglanti Kabulu Hatasi: %d\n", WSAGetLastError());
break;
}
printf("istemci Kabul Edildi, istemci Adresi: %s:%d\n\a", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
for(;;)
{
for(unsigned long i=0;i<1000000000;i++){
printf("x");
buffer2[0]='\0';
if((recv(sClient,buffer2, sizeof(buffer2), 0) == -1))
{printf("x1");
printf("Baglanti Koptu!!!");
break;
}
printf("x2");
if(buffer2)
printf("\nistemci diyor ki: %s", buffer2);
printf("x3");
}
printf("\nBen: ");
buffer[0]='\0';
fgets(buffer, sizeof(buffer), stdin);
if (send(sClient,buffer, sizeof(buffer), 0) == -1){
printf("Baglanti Koptu!!!");break;}
}
}
closesocket(sListen);
WSACleanup();
return 0;
}